2017-09-25 62 views
0

我有一个php文件,我想运行每2秒钟1分钟。因为在我的服务器上,我只能设置min cron 1分钟。所以我做了这个脚本。正好每2秒运行一次php脚本

<?php 
$start = microtime(true); 
set_time_limit(60); 
for ($i = 0; $i < 59; ++$i) { 
    shell_exec('/usr/local/bin/php /usr/local/www/my_file.php'); 
    time_sleep_until($start + $i + 2); 
} 
?> 

和第二个选择是。

<?php 
for ($i = 0; $i <= 59; $i+=2) { 
    shell_exec('/usr/local/bin/php /usr/local/www/my_file.php'); 
    sleep(2); 
} 
?> 

但他们都不工作,因为我的脚本执行时间是50到60秒。所以,它不是每2秒运行一次,而是每50到60秒运行一次。那么,是否有任何解决方案可以每2秒开始一次新的脚本执行?我没有任何想法,请帮助我。

+0

试过[cronjobs](https://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix - /)? –

+3

如果脚本需要50秒才能完成,则每2秒执行一次没有意义。你只是给自己问题的并发性,数据访问,不一致的记录等 – ADyson

+0

@chade_试过,但我可以设置1分钟的最小克伦...不是每2秒。 –

回答

2

您可以编写一个bash脚本,该脚本每2秒钟执行一次php脚本,以达到指定的数量。而这个bash脚本可以通过cronjob执行。

实施例:

#!/bin/bash 

count=10 

for i in `seq 1 $count`; do 
    /bin/php /path/to/scrip.php & 
    sleep 2 
done 
+0

它的工作。我必须运行脚本1分钟,所以我更新计数= 30。 –