您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman利用Timer库的persistent属性实现仅定时执行一次的任务及timer数组形式回调及回调参数
发布时间:2021-12-01 23:05:34编辑:雪饮阅读()
workerman的Timer库的persistent属性用于决定一个定时任务是否持续执行,默认情况下为true即表示每隔一个周期就运行一次,若为false则为仅在所指定的第一个周期结束时候运行一次。
另外对于Timer的回调不仅仅是可以用匿名方法,也可以用数组形式(数组中两个元素,第一个元素是类实例对象的引用,第二个元素是该实例下的一个可以访问的方法名,以字符串形式),
对于提供的回调以数组形式时则有对应另外一个参数给这个数组形式回调提供参数列表。
分别对应被调用方法的第一个参数,第二个参数,应该更多参数也是依次对应,这里没有仔细测试。
实例:
<?php
use Workerman\Worker;
use Workerman\Lib\Timer;
require_once __DIR__ . '/vendor/autoload.php';
class Mail{
public function send($to,$content){
echo "\r\n";
var_dump("给:`".$to."`的邮件:`".$content."`已发送");
echo "\r\n";
var_dump("当前时间:".date("i:s",time()));
}
}
$worker = new Worker('text://0.0.0.0:8484');
$worker->onWorkerStart = function($worker)
{
var_dump("当前时间:".date("i:s",time()));
// 定时,5秒后发送,仅发一次,persistent参数决定被添加的回调func是否被持续time_interval执行
Timer::add(5,[new Mail(),"send"],["1509272975@qq.com","你好"],false);
};
// 运行worker
Worker::runAll();
实例运行:
[root@localhost workerman]# php -c /usr/local/php734/lib/php/php.ini start.php start
Workerman[start.php] start in DEBUG mode
----------------------------------------- WORKERMAN -----------------------------------------
Workerman version:4.0.22 PHP version:7.3.4
------------------------------------------ WORKERS ------------------------------------------
proto user worker listen processes status
tcp root none text://0.0.0.0:8484 1 [OK]
---------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
string(18) "当前时间:56:23"
string(50) "给:`1509272975@qq.com`的邮件:`你好`已发送"
string(18) "当前时间:56:28"
关键字词:persistent,workerman,定时,仅一次,Timer
相关文章
- workerman利用daemonize属性实现代码层控制进程启动方
- workerman利用reloadable属性实现新增业务代码载入并
- workerman属性stdoutFile(输出重定向)及daemonize实现脚
- workerman利用属性user实现指定用户运行进程
- workerman利用属性pidFile自定义进程pid文件
- workerman利用属性connections遍历向客户端定时发消息
- workerman利用logFile属性指定自身运行日志存储路径(不
- workerman端口复用reusePort属性实现同一个入口监听多
- workerman端口复用reusePort属性
- workerman只在指定进程运行的定时器