2017-02-26 293 views
0

我有一个问题,即如果没有响应,偶尔会运行一个脚本(对其他网站有依赖关系)挂起尝试从这些其他网站检索元素。我很欣赏我需要再次查看这部分代码。如何限制CLI PHP脚本的执行时间

但是,与此同时,我想了解为什么这些命令,我​​已经尝试并放在我的PHP代码的顶部不起作用?

ini_set('max_execution_time', 30); 
set_time_limit(30); 

脚本在PHP完全运行和CLI PHP执行(而不是网页从浏览器启动)为:

php /var/www/html/client/index.php 

脚本执行得很好,如果他们中的一个挂起,它会作为一个进程卡住(通过TOPHTOP查看),并在尝试执行并且从不关闭时使用资源。

除了我已经尝试过的方法之外,还有其他方法可以强制脚本停止和关闭吗?

谢谢。

+1

阻止呼叫,例如。到数据库或外部来源,不计入执行时间。您最好为您的外部请求设置合理的超时时间。 –

+0

可能的重复:http://stackoverflow.com/questions/10587323/timeout-a-function-in-php#10587359 – avysk

回答

0

您正在使用set_time_limit(30);,这会增加执行脚本的时间。阅读其文档here

如果您将该行加入循环,则您将在每次传递时为脚本执行时间限制添加时间。

CLI的默认时间限制为0,这是无限的。使用相同的方法,但只是在脚本的开始,并确保不在任何循环内或通过递归多次执行等。

这应该解决问题。

+0

你好,感谢您的回复。我在页面顶部有这条线,所以它只执行一次而不是循环的一部分。除非我误解,并且您的意思是每次脚本(该行出现时)都会增加所有其他脚本的时间?我现在要检查doco,谢谢。 – omega1