php常驻内存做任务监控,EasyTask: PHP常驻内存定时任务,PHP定时器(PHP native resident timing task, PHP timing task, PHP time...

EasyTask简单易用的PHP常驻内存定时任务包

stable_version.svg

php_version.svg

license.svg

项目介绍

EasyTask是PHP常驻内存定时任务Composer包,通过其简洁的Api,您可以用它来完成需要长期反复运行的任务(如订单超时自动取消,短信邮件异步推送,后台报表数据异步生成,队列/消费者/频道订阅者),任何在FPM下比较耗时的功能您都可以交给它来完成。我们还支持任务异常退出自动恢复任务,您还能自定义配置异常信息(例如接收异常通知到您的邮件或短信)。工具包同时支持windows、linux、mac环境运行。

运行环境

windows:PHP>=5.5 (依赖com_dotnet+wpc扩展,wpc扩展一键安装包)

linux|mac:PHP>=5.5 (依赖pcntl+posix扩展,一般默认已装)

Composer安装

composer require easy-task/easy-task

【一】. 快速入门->创建任务

//初始化

$task = new Task();

// 设置常驻内存

$task->setDaemon(true);

// 设置项目名称

$task->setPrefix('EasyTask');

// 设置记录运行时目录(日志或缓存目录)

$task->setRunTimePath('./Application/Runtime/');

// 1.添加闭包函数类型定时任务(开启2个进程,每隔10秒执行1次)

$task->addFunc(function () {

$url = 'https://www.gaojiufeng.cn/?id=243';

@file_get_contents($url);

}, 'request', 10, 2);

// 2.添加类的方法类型定时任务(同时支持静态方法)(开启1个进程,每隔20秒执行1次)

$task->addClass(Sms::class, 'send', 'sendsms', 20, 1);

// 3.添加指令类型的定时任务(开启1个进程,每隔10秒执行1次)

$command = 'php /www/web/orderAutoCancel.php';

$task->addCommand($command,'orderCancel',10,1);

// 启动任务

$task->start();

【二】. 快速入门->连贯操作

$task = new Task();

// 设置常驻内存

$task->setDaemon(true)

// 设置项目名称

->setPrefix('ThinkTask')

// 设置系统时区

->setTimeZone('Asia/Shanghai')

// 设置子进程挂掉自动重启

->setAutoRecover(true)

// 设置PHP运行路径,一般Window系统才需要设置,当系统无法找到才需要您手动设置

->setPhpPath('C:/phpEnv/php/php-7.0/php.exe')

/**

* 设置记录运行时目录(日志或缓存目录)

* 不设置的话Linux默认/tmp/目录

* 不设置的话Window默认C:\Windows\Temp目录

*/

->setRunTimePath('./Application/Runtime/')

/**

* 关闭EasyTask的异常注册

* EasyTask将不再监听set_error_handler/set_exception_handler/register_shutdown_function事件

*/

->setCloseErrorRegister(true)

/**

* 设置接收运行中的错误或者异常(方式1)

* 您可以自定义处理异常信息,例如将它们发送到您的邮件中,短信中,作为预警处理

* (不推荐的写法,除非您的代码健壮)

*/

->setErrorRegisterNotify(function ($ex) {

//获取错误信息|错误行|错误文件

$message = $ex->getMessage();

$file = $ex->getFile();

$line = $ex->getLine();

})

/**

* 设置接收运行中的错误或者异常的Http地址(方式2)

* Easy_Task会POST通知这个url并传递以下参数:

* errStr:错误信息

* errFile:错误文件

* errLine:错误行

* 您的Url收到POST请求可以编写代码发送邮件或短信通知您

* (推荐的写法)

*/

->setErrorRegisterNotify('https://www.gaojiufeng.cn/rev.php')

// 添加任务定时执行闭包函数

->addFunc(function () {

echo 'Success3' . PHP_EOL;

}, 'fucn', 20, 1)

// 添加任务定时执行类的方法

->addClass(Sms::class, 'send', 'sendsms1', 20, 1)

// 添加任务定时执行命令

->addCommand('php /www/wwwroot/learn/curl.php','cmd',6,1)

// 启动任务

->start();

【三】. 快速入门->命令整合

// 获取命令

$command = empty($_SERVER['argv']['1']) ? '' : $_SERVER['argv']['1'];

// 配置任务

$task = new Task();

$task->setDaemon(true)

->addFunc(function () {

$url = 'https://www.gaojiufeng.cn/?id=271';

@file_get_contents($url);

}, 'request', 10, 2);;

// 根据命令执行

if ($command == 'start')

{

$task->start();

}

elseif ($command == 'status')

{

$task->status();

}

elseif ($command == 'stop')

{

$task->stop();

}

else

{

exit('Command is not exists');

}

启动: php this.php start

查询: php this.php status

关闭: php this.php stop

【四】. 快速入门->认识输出信息

┌─────┬──────────────┬─────────────────────┬───────┬────────┬──────┐

│ pid │ name │ started │ timer │ status │ ppid │

├─────┼──────────────┼─────────────────────┼───────┼────────┼──────┤

│ 32 │ Task_request │ 2020-01-10 15:55:44 │ 10 │ active │ 31 │

│ 33 │ Task_request │ 2020-01-10 15:55:44 │ 10 │ active │ 31 │

└─────┴──────────────┴─────────────────────┴───────┴────────┴──────┘

参数:

pid:当前定时任务的进程id

name:您为您的定时任务起的别名

started:定时任务启动时间

timer:定时任务执行间隔时间

status:定时任务状态

ppid:管理当前定时任务的守护进程id

【五】. 进阶了解->windows开发规范

-> 强烈建议您使用绝对路径规范开发

-> 启动异常请尝试用同步方式启动或者查看系统日志定位问题

-> Windows命令行输出乱码,window命令行不支持utf-8编码,请使用git_bash终端

【六】. 进阶了解->框架集成

【七】. 进阶了解->推荐操作

-> 推荐使用7.1以上版本的PHP,支持异步信号,不依赖ticks

-> 推荐安装php_event扩展基于事件轮询的毫秒级定时支持

【八】. 感谢phpStorm为开源作者提供免费授权码

phpstorm.svg

【九】. Bug反馈

请反馈至QQ群60973229,感谢您的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值