我有个秒级任务 怎么处理 linux 的crond服务 最少是1分钟 php

我需要实时接收一个数据去处理,必须是秒级,怎么处理呢

阅读 4k
4 个回答

如果系统使用systemd的话可以利用systemd.timer设置秒甚至毫秒级定时任务。
具体参考:这里

crontab默认最小单位是分,但是也可以用一些取巧的方式实现。例如,每10秒执行一次:

* * * * * php /home/test.php
* * * * * sleep 10; php /home/test.php
* * * * * sleep 20; php /home/test.php
* * * * * sleep 30; php /home/test.php
* * * * * sleep 40; php /home/test.php
* * * * * sleep 50; php /home/test.php

每秒的话,也可以上述方式实现,但是就很多了,不建议,因此用个shell脚本是比较好的选择。

#!/bin/bash  
  
step=1 #间隔的秒数,不能大于60  
  
for (( i = 0; i < 60; i=(i+step) )); do  
    $(php '/home/test.php')  
    sleep $step  
done  
  
exit 0  

crontab处理不了秒级的, 你只能用常驻进程去解决了

crontab最小执行时间粒度为一分钟,秒级的可以使用开启一个死循环来不停获取数据。
while(true){
file_get_contents('get_data_controller');
sleep(1);
}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏