默认的,crontab只支持精确到某一分钟。假设有如下定时任务,每分钟执行:

#短信推送脚本
*  *  *  *  *  php /home/script/sendsms.php

现在业务量激增,1分钟才推送一次,已无法满足需求,需要把时间缩短,如每隔30秒,则可以改成如下:

#短信推送脚本
*  *  *  *  *  php /home/script/sendsms.php
*  *  *  *  *  sleep 30 && php /home/script/sendsms.php

利用了sleep休眠指令,延迟30秒才执行指定的脚本。由于crontab的特性,每个定时任务之间不会相互干扰、阻塞,所以,上面这两个任务组合起来,就变成了每隔30秒执行。

举一反三,每隔20秒执行:

#短信推送脚本
*  *  *  *  *  php /home/script/sendsms.php
*  *  *  *  *  sleep 20 && php /home/script/sendsms.php
*  *  *  *  *  sleep 40 && php /home/script/sendsms.php