AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
## 主函数说明 1.`setDaemon($daemon = false)` 用来设置任务是否在后台运行,默认是非后台运行。 ***** 2.`setPrefix($prefix = 'Task')` 用来设置项目名称或者任务前缀,默认值是Task,设置项目名称有助于进程日志区分,避免多个项目同时相同的运行时,建议每个项目单独设置一个值。项目名称作为任务前缀也会显示到进程标题中。例如windows非后台运行你可以看到dos窗口的标题,linux下可以通过进程管理看到进程标题携带任务前缀。 ***** 3.`setPhpPath($path)` 用来设置php.exe的位置,默认不用设置,会自动获取,如果获取失败需要自己设置。当然如果你想让执行你的任务使用其他版本的PHP来执行,也可以使用此api来实现。此api仅windows下设置有效。切记!切记!举个栗子: ~~~ $task->setPhpPath('C:/phpEnv/php/php-7.0/php.exe'); ~~~ ***** (4).`setAutoRecover($isRec = false)` 用来设置任务挂掉是否自动重启,默认是关闭的,例如你在任务中编写了不规范的代码导致内存溢出,执行任务的进程会挂掉,此时EasyTask会重新启动您的进程。 ***** (5).`setCloseErrorRegister($isReg = false)` 用来设置关闭EasyTask底层的异常注册,默认是不会关闭。如果开启EasyTask将不再监听set_error_handler/set_exception_handler/register_shutdown_function事件。例如您自己编写框架时不想要EasyTask处理异常注册可以设置关闭。 ***** (6).`setErrorRegisterNotify($notify)` 用来自定义EasyTask出现异常的处理方式,例如您的任务出现异常想要通知自己的邮件或者短信,那么你就可以使用此方法来实现。 用法1:您传递闭包函数,当发生异常我们会向您的闭包函数传递一个异常句柄 ~~~ $task->setErrorRegisterNotify(function ($ex) { //获取错误信息|错误行|错误文件 $message = $ex->getMessage(); $file = $ex->getFile(); $line = $ex->getLine(); //发生邮件和短信的代码自己来写在这里 }) ~~~ 用法2:您传递1个url地址,当发生异常我们会向您的url地址发送post数据,您的url可以自定义处理.。 ~~~ $task->setErrorRegisterNotify('https://www.gaojiufeng.cn/rev.php') ~~~ post参数: ~~~ errStr:错误信息 errFile:错误文件 errLine:错误行 ~~~ 为什么有两种用法?因为方法1需要您编写代码稳定,否则影响整个进程,当您有足够的信心编写足够健壮的代码的话您可以使用第一种方式。否则请用第二种方式,在您的url地址中对应控制器编写发送短信或者邮件的操作。 ***** (7).`setTimeZone($timeIdent)` 用来自定义时区,默认EasyTask并不会设置时区。 ~~~ $task->setTimeZone('Asia/Shanghai') ~~~ ***** (8).`setRunTimePath($path)` 用来设置EasyTask运行时的日志或者缓存保存的目录地址,如果不设置默认保存在PHP临时文件目录,PHP临时文件目录的地址具体的位置可以使用sys_get_temp_dir()函数来获取 ~~~ $task->setRunTimePath('./runtime/'); ~~~ ***** (9).`addFunc($func, $alas, $time = 1, $used = 1)` 用来添加一个闭包类型的任务,你可以把想执行的代码写在闭包函数中。 参数1:闭包函数,你需要重复执行的代码写在里面 参数2:任务别名,您为任务起的别名,尽量不要重复 参数3:任务执行间隔,默认值为秒,如果开启event扩展会支持毫秒 参数4:开启几个进程执行 ~~~ $task->addFunc(function () { $url = 'https://www.gaojiufeng.cn/?id=319'; file_get_contents($url); }, 'request', 10, 1);; ~~~ 上面的代码在10秒后对应的网址会被访问1次 ~~~ $task->addFunc(function () { $url = 'https://www.gaojiufeng.cn/?id=319'; file_get_contents($url); }, 'request', 10, 2);; ~~~ ***** 上面的代码在10秒后对应的网址会被访问2次,因为开启了2个进程 ***** (10).`addClass($class, $func, $alas, $time = 1, $used = 1)` 用来添加一个类的方法作为任务,你可以把想要执行的类的方法放在这里运行。 参数1:想要执行的类名称,包含完整的命名空间地址 参数2:想要执行的类的某个方法,支持普通pulic方法和静态方法 参数3:任务别名,您为任务起的别名,尽量不要重复 参数4:任务执行间隔,默认值为秒,如果开启event扩展会支持毫秒,也支持crontab表达式 参数5:开启几个进程执行 ~~~ $task->addClass(Sms::class, 'send', 'send_sms_task', 20, 1) ~~~ 上面的代码会在20秒后执行Sms类的send方法 ***** (11).`addCommand($command, $alas, $time = 1, $used = 1)` 用来添加一条cmd命令或者shell命令作为任务,你可以将要执行的命令放在这里运行 参数1:想要执行的cmd命令或者shelll命令 参数2:任务别名,您为任务起的别名,尽量不要重复 参数3:任务执行间隔,默认值为秒,如果开启event扩展会支持毫秒,也支持crontab表达式 参数4:开启几个进程执行 ~~~ $task->addCommand('php /www/wwwroot/learn/curl.php','cmd',6,3) ~~~ 上面的代码每隔6秒会执行3次上面命令 ***** (12).`start()` 启动所有任务,建议配合status,stop整合命令使用。如果是windows下同步模式启动,可以直接关闭所有cmd窗口即可关闭所有任务,如果是linux同步模式启动,直接按ctrl+c即可关闭所有任务 ***** (13).`status()` 查看任务状态,建议配合start,stop整合命令使用 ***** (14).`stop($force = false)` 关闭所有任务,建议配合start,status整合命令使用 默认是非强制关闭,第二个参数如果是true则认为是强制关闭。 普通关闭任务:向守护进程发送退出命令,守护进程安全退出,执行的定时器会本次执行完成后安全退出。全部退出后在日志中能看到。 强制关闭任务:向守护进程发送退出命令,守护进程强制杀死运行中的定时器,然后守护进程自己退出进程。执行完成基本立即全部退出。 ***** (15).`setCloseStdOutLog($close= false)` 默认EasyTask在常驻运行中会将程序运行中的输出(echo/var_dump/printf)保存到Std文件中,方便用户进行查看和调试,但是这是非常占用磁盘空间的,因为有人建议增加此开关,设置为true则不会将你在定时任务中的输出信息保存到Std文件中。我建议用户养成良好的习惯,不要使用此设置,用默认即可,程序在运行中尽量不要输出任何东西,这是非常规范的标准。当然你如果不想保存到EasyTask的运行时文件中可以自己用linux命令重定向输出到其他文件。 *****