出品 | 漫云科技

整理 | 赵建平

⛳️常规方法,利用sh脚本
1.新建sh文件

 2.写脚本内容
#!/bin/bash
step=10#间隔的秒数,不能大于60
for ((i=0;i<60;i=(i+step)));do
cd /www/wwwroot/根目录 && php think xxx
或者
curl 'http:www.xxx.com'
sleep $step
done
exit
3.添加计划任务

 特殊说明:此程序有缺陷 - for循环里面执行命令的时候会有等待程序执行的时间,如php think xxx执行了3s,sleep 10秒,这就是13秒,1分钟不但执行不了6次,而且还会导致和下一分钟的任务重叠,有时候会出现程序异常。

解决办法:使用swoole的毫秒定时器可完美解决此类问题。

⛳️swoole毫秒级定时器
1.PHP代码
// 无需任何引入,安装swoole扩展后直接写就可以用,只要不清除会永远执行下去
// 参考文档:https://wiki.swoole.com/#/timer
\Swoole\Timer::tick(10000, function(){
    echo date("H:i:s").PHP_EOL;
    shell_exec('cd /www/wwwroot/根目录 && php think xxx');
});
\Swoole\Event::wait();
2.执行效果

 3.使用宝塔的swoole的守护进程运行

从此程序就可以美丽的执行下去了~

参考文档:swoole官方中文文档

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐