php使用workerman实现秒极定时任务

网极科技6个月前代码笔记498

通过宝塔面板的计划任务,我们最多可以将定时任务设置在分钟级别,需要秒级别就不可完成了,所以需要借助其他程序,这里选择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
设置参数如下图

相关文章

迁移wordpress站点到阿里云函数计算

迁移wordpress站点到阿里云函数计算

wordpress作为一款常用的建站工具,存在大量的老站需要维护升级,本文讲一下如何迁移到阿里云函数计算,使用Serverless架构进行部署wordpress 在函数计算上全新安装wordpres...

将股票日K转换为年K的PHP代码

将股票日K转换为年K的PHP代码

以下是将股票日K转换为年K的PHP代码示例: <?php // 股票日K数据 $dailyK = [ ['date' => '2022-12-3...

php通过日K计算周K、月K、季K、年K

php通过日K计算周K、月K、季K、年K

实现思路: 首先读取股票日K线数据,存储到数组中。然后分别计算周K、季K、月K的数据,存储到新的数组中。最后将转换后的数据保存到文件中,以备后续使用。 下面是实现代码的示例:【精选】PHP将股...

【精选】PHP将股票日K线数据转换为季K线数据

【精选】PHP将股票日K线数据转换为季K线数据

使用PHP来将股票日K线数据转换为季度K线数据。具体实现方法如下:获取日K线数据,例如从数据库中查询出所有日期的股票数据,保存在一个数组中,每个元素包含如下信息: $day_data = [...

https网页无法加载http的文件,给html头部添加一段代码搞定

https网页无法加载http的文件,给html头部添加一段代码搞定

在强制要求https协议的情况下,一年一签的SSL很多时候忘记续签,导致成为http协议,进而引发文件加载不到的问题 https与http能否共存https地址中,如果加载了http资源,浏...

火车头采集分页多页数据

火车头采集分页多页数据

在使用火车头采集器时,遇到有分页多页的情况出现,可进行如下设置进行采集1 在第二步,采集内容规则中设置“分页获取规则”,即页码标签位置2 在标签编辑页面勾选  该标签在分页中匹配 ...