2017-09-26 116 views
0

要监视特定的脚本max_execution_time,我用PHP ini_set max_execution_time nog工作正常吗?

ini_set('max_execution_time', 600); //600 seconds = 10 minutes

在我的脚本的顶部。然而,当我建立同一个文件的记录,它返回我下面的:

25-09-2017 23:08:01|STARTED 
25-09-2017 23:09:01|ALREADY RUNNING 
25-09-2017 23:10:01|ALREADY RUNNING 
...................|ALREADY RUNNING 
26-09-2017 01:09:01|ALREADY RUNNING 
26-09-2017 01:10:01|ALREADY RUNNING 
26-09-2017 01:11:01|STARTED 
26-09-2017 01:12:01|ALREADY RUNNING 
26-09-2017 01:13:01|ALREADY RUNNING 
...................|ALREADY RUNNING 
26-09-2017 03:10:01|ALREADY RUNNING 
26-09-2017 03:11:01|ALREADY RUNNING 
26-09-2017 03:12:01|STARTED 
26-09-2017 03:13:01|ALREADY RUNNING 
26-09-2017 03:14:02|ALREADY RUNNING 
...................|ALREADY RUNNING 
26-09-2017 05:09:01|ALREADY RUNNING 
26-09-2017 05:10:02|ALREADY RUNNING 
26-09-2017 05:11:01|STARTED 
26-09-2017 05:12:01|ALREADY RUNNING 
26-09-2017 05:13:02|ALREADY RUNNING 
26-09-2017 05:14:01|ALREADY RUNNING 
...................|ALREADY RUNNING 
26-09-2017 07:14:01|ALREADY RUNNING 
26-09-2017 07:15:01|ALREADY RUNNING 
26-09-2017 07:16:01|STARTED 

...................|ALREADY RUNNING代表多个消息重复其间的每一分钟。

我做错了什么,因为间隔不是10分钟?

编辑:

while循环,我有:

while (true) { 
    //DO PROCESSING WHEN FILES ARE PRESENT 
    Sleep(1); 
    } 
+0

你是否检查过你的实际超时限制是用phpinfo(),并用浏览器加载页面? 如果您正在运行php-fpm和nginx或任何旧的“Apache和PHP”限制,实际的时间限制可能会被设置,并覆盖PHP自己的php.ini,否则在哪里。 – DocWeird

+0

@DocWeird,我用cronjob运行脚本。 phpinfo表示最大。对于本地值和主值,执行时间均设置为30。 –

+1

您是否在脚本中使用sleep -command? IIRC使用睡眠不会增加执行时间。 – DocWeird

回答

1

只需手动检查的执行时间。

$max_exec_time = 600; 

$start_time = time(); 
while (true) { 
    do_something(); 
    sleep(1); 
    if (time() - $start_time > $max_exec_time) { 
    exit; 
    } 
} 
+0

这实际上是一个好主意!谢谢..!已知此方法考虑的任何缺点? –

+1

只有一个我能想到的是它不会退出,直到do_something()完成。所以你应该设置max_execution_time以防万一。 – Dmitri

+0

好的,谢谢你的反馈 –