我有几个每3分钟运行一次的脚本,日程安排如下:
*/3 * * * * /some/script1.php
*/3 * * * * /some/script2.php
*/3 * * * * /some/script3.php
我认为这些脚本同时运行,但我希望这些脚本每3分钟运行一次但不能同时运行。请告诉我,我该怎么做到这一点。
答案 0 :(得分:1)
你无法通过你所拥有的线来达到这一点,但这些线路总是在同一时间运行。但是,您可以简单地创建一个通过cron调用的“主”脚本,然后一个接一个地调用脚本。
*/3 * * * * /usr/bin/php /some/masterscript.php
masterscript.php:
<?php
exec('/usr/bin/php /some/script1.php');
exec('/usr/bin/php /some/script2.php');
exec('/usr/bin/php /some/script3.php');
?>
编辑:
根据您的服务器设置 - 安装node.js.你可以为每秒设置一个cron包。也许这可以帮助..
答案 1 :(得分:1)
你可以但不能使用这种语法,而应该使用这种语法:
1,4,7,10,13,16,etc... * * * * /some/script1.php
2,5,8,11,14,17,etc... * * * * /some/script2.php
and so on....
答案 2 :(得分:1)
如果你只是希望每个脚本依次执行,第二个脚本在第一个脚本完成之前不会启动,依此类推,只需将它们全部放在一个cron命令中即可。
cron通过将命令字符串传递给/bin/sh
来调用每个命令 - shell可以很容易地按顺序调用几个命令。
*/3 * * * * /some/script1.php ; /some/script2.php ; /some/script3.php
答案 3 :(得分:0)
你觉得脚本运行之间的几秒钟就够了吗? 这样的命令怎么样?
*/3 * * * * echo "<?php echo 'Start ...';sleep(2);echo Go; ?>"|php /some/script1.php
*/3 * * * * echo "<?php echo 'Start ...';sleep(4);echo Go; ?>"|php /some/script2.php
*/3 * * * * echo "<?php echo 'Start ...';sleep(6);echo Go; ?>"|php /some/script3.php
您也可以用随机等待时间替换固定等待时间。
而不是sleep(2)
尝试通用sleep(rand(1,10))
。
我希望这可能有用