php使用workerman实现秒极定时任务
通过宝塔面板的计划任务,我们最多可以将定时任务设置在分钟级别,需要秒级别就不可完成了,所以需要借助其他程序,这里选择workerman.net
Workerman是一款PHP开发的开源高性能的PHP 应用容器。需要在终端运行,尽量选择Linux系统运行,windows系统会有很多问题。
1、环境检测
1、安装PHP>=5.4,并安装了pcntl、posix扩展
2、建议安装event扩展,但不是必须的(注意event扩展需要PHP>=5.4)
3、在Linux终端运行以下命令:
curl -Ss https://www.workerman.net/check | php
显示ok就是环境正常,不然下方会有提示,依照提示操作。
2、安装workerman
在需要安装的目录下,运行Linux终端,运行以下命令:
composer require workerman/workerman
如遇到报错可参考这个文章:解决composer异常
3、安装crontab
在刚才安装workerman的目录下,运行Linux终端,运行以下命令:
composer require workerman/crontab
4、编程测试
新建一个test.php文件,输入以下代码:
<?php
use Workerman\Worker;
require __DIR__ . '/vendor/autoload.php';
use Workerman\Crontab\Crontab;
$worker = new Worker();
// 设置时区,避免运行结果与预期不一致
date_default_timezone_set('PRC');
$worker->onWorkerStart = function () {
// 每1秒执行.
new Crontab('* * * * * *', function(){
echo date('Y-m-d H:i:s')."\n";
});
/*
// 每分钟的第1秒执行.
new Crontab('1 * * * * *', function(){
echo date('Y-m-d H:i:s')."\n";
});
// 每天的7点50执行,注意这里省略了秒位.
new Crontab('50 7 * * *', function(){
echo date('Y-m-d H:i:s')."\n";
});*/
};
Worker::runAll();
5、运行测试
workerman程序的运行需要在Linux终端下,运行命令需要加start,如下
php test.php start
终端即可每秒输出时间
6、后台一直运行
workerman程序的后台运行需要在Linux终端下,运行命令需要加start -d,如下
php test.php start -d
建议使用Superviso进行进程守护
在宝塔面板后台–软件商店-搜索Superviso 安装
启动命令为:
php test.php restart -d
注意:这里用了restart 就是重启命令,而不是直接start
设置参数如下图