PHP学习网将不定期分享优质开源项目、优质技术文章、精选笔试题和资源。 您可以将PHP学习网设为明星,第一时间获取最新推送,不错过优质内容
当我们做计划任务或者需要任务调度系统时,这个包非常有用。 这是一个作曲家包。 您可以将其安装在您需要的地方。 下面我们就来说说这个包。
首先我们要明白,PHP中的定时器只能基于CLI命令行运行。 因为FPM方法用完了,显存立即释放,无法常驻。 其实我们也可以让FPM常驻,但是显存太贵了。 大的。 所以正式使用FPM本身为我们提供网站CURD,CLI模式是前端核心。 大量的PHP服务都是基于PHP_CLI模式的,因此中级程序员必须了解CLI模式。 甚至更大的公司也使用 FPM 来处理网页,使用 CLI 来处理服务队列。
下面的定时任务也是基于CLI执行的。
我们使用的定时任务包是EasyTask,先安装它(参考官方文档,不需要安装事件扩展):
composer require easy-task/easy-task
用例
我们创建一个 console.php 并简单地使用它:
// 加载Composer代码
require './vendor/autoload.php';
//初始化
$task = new Task();
// 设置非常驻内存
$task->setDaemon(false);
// 设置项目名称
$task->setPrefix('EasyTask');
// 设置记录运行时目录(日志或缓存目录)
$task->setRunTimePath('./Application/Runtime/');
// 1.添加闭包函数类型定时任务(开启2个进程,每隔10秒执行1次你写闭包方法中的代码)
$task->addFunc(function () {
$url = 'https://www.viphper.com';
@file_get_contents($url);
}, 'request', 10, 1);
// 启动任务
$task->start();
我们执行这个脚本:
php console.php start
如果是windows系统,我们看到启动了2个cmd窗口,一个窗口是守护进程php 定时器,另一个是每隔10s执行一次访问网站的定时任务的进程,测试成功。
所以如果我们不显示cmd执行,只需将其改为常驻操作即可:
// 设置常驻内存
$task->setDaemon(true);
那么我们如何添加多个定时任务呢?只需要调用addFunc方法添加任务即可,然后在下面添加一个15秒的定时任务
$task->addFunc(function () {
$url = 'https://www.viphper.com';
@file_get_contents($url);
}, 'request2', 15, 1);
只是说添加任务,那么如何管理呢? 官方给出了一个基本的命令整合命令:
// 获取命令
$force = empty($_SERVER['argv']['2']) ? '' : $_SERVER['argv']['2'];
$command = empty($_SERVER['argv']['1']) ? '' : $_SERVER['argv']['1'];
// 配置任务
$task = new Task();
$task->setRunTimePath('./Application/Runtime/');
$task->addFunc(function () {
$url = 'https://www.viphper.com';
@file_get_contents($url);
}, 'request', 10, 2);;
// 根据命令执行
if ($command == 'start')
{
$task->start();
}
elseif ($command == 'status')
{
$task->status();
}
elseif ($command == 'stop')
{
$force = ($force == 'force'); //是否强制停止
$task->stop($force);
}
else
{
exit('Command is not exist');
}
启动任务:phpconsole.phpstart
查询任务:phpconsole.phpstatus
普通关闭:phpconsole.phpstop
强制关闭:phpconsole.phpstopforce
其实你可以在任务管理中找到所有进程并将其关闭。 其实EasyTask还支持addClass添加定时器执行类,也支持addCommand添加定时器执行cmd或者shell命令php 定时器,还支持crontab格式指令。
遇到问题多检查,可以做很多项目。
官方参考
资源地址
资源地址获取:
发表评论