php 定时器-【开源推荐】强烈建议大家看看如何使用PHP定时任务扩展包EasyTak

PHP学习网将不定期分享优质开源项目、优质技术文章、精选笔试题和资源。 您可以将PHP学习网设为明星,第一时间获取最新推送,不错过优质内容

当我们做计划任务或者需要任务调度系统时,这个包非常有用。 这是一个作曲家包。 您可以将其安装在您需要的地方。 下面我们就来说说这个包。

首先我们要明白,PHP中的定时器只能基于CLI命令行运行。 因为FPM方法用完了,显存立即释放,无法常驻。 其实我们也可以让FPM常驻,但是显存太贵了。 大的。 所以正式使用FPM本身为我们提供网站CURD,CLI模式是前端核心。 大量的PHP服务都是基于PHP_CLI模式的,因此中级程序员必须了解CLI模式。 甚至更大的公司也使用 FPM 来处理网页,使用 CLI 来处理服务队列。

下面的定时任务也是基于CLI执行的。

我们使用的定时任务包是EasyTask,先安装它(参考官方文档,不需要安装事件扩展):

php 定时器_定时器怎么调_定时器开关怎么设置时间

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 定时器

我们执行这个脚本:

php console.php start

如果是windows系统,我们看到启动了2个cmd窗口,一个窗口是守护进程php 定时器,另一个是每隔10s执行一次访问网站的定时任务的进程,测试成功。

所以如果我们不显示cmd执行,只需将其改为常驻操作即可:

定时器怎么调_php 定时器_定时器开关怎么设置时间

// 设置常驻内存
$task->setDaemon(true);

那么我们如何添加多个定时任务呢?只需要调用addFunc方法添加任务即可,然后在下面添加一个15秒的定时任务

$task->addFunc(function () {
$url = 'https://www.viphper.com';
@file_get_contents($url);
}, 'request2', 15, 1);

只是说添加任务,那么如何管理呢? 官方给出了一个基本的命令整合命令:

定时器怎么调_定时器开关怎么设置时间_php 定时器

// 获取命令
$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格式指令。

遇到问题多检查,可以做很多项目。

官方参考

资源地址

资源地址获取: