我需要实时接收一个数据去处理,必须是秒级,怎么处理呢
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最小执行时间粒度为一分钟,秒级的可以使用开启一个死循环来不停获取数据。
while(true){
file_get_contents('get_data_controller');
sleep(1);
}
3 回答3.1k 阅读✓ 已解决
8 回答3.6k 阅读
2 回答3.1k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
如果系统使用systemd的话可以利用
systemd.timer
设置秒甚至毫秒级定时任务。具体参考:这里