2013-04-04 94 views
0

我想运行一段文件一段时间。我可以为此使用set_time_limit函数。但是我想在终止时调用一个函数。这个功能需要被调用。否则我将无法再次运行此文件。用户在set_time_limit时定义函数调用PHP

当set_time_limit限制满足时,是否有任何方法在终止时调用函数?

+0

您是否将此脚本用于Web请求或从命令行运行? – Naveed 2013-04-04 10:14:04

回答

1

你可以使用register_shutdown_function

<?php 
function shutdown() { 
    // 3 seconds are over 
    set_time_limit(0); // now we want no limit anymore 
    echo "Shutdown!\n"; 
    while(true); // some other long action 
} 
error_reporting(0); 
set_time_limit(3); 
register_shutdown_function('shutdown'); 
while(true); // some long action 

error_reporting调用完成时,申请期限超过,以避免错误消息。

+0

感谢您的回答,但我有一个疑问,正如您在代码中提到的那样,参数值为3的set_time_limit意味着文件将执行3分钟,并在终止时调用register_shutdown_function。但是现在由于应用了时间限制,现在可以运行回调函数。如果回调函数会运行一个很长的动作脚本。 – 2013-04-04 17:11:32

+0

@AbhimanyuSharma这是一个很好的观点。我已经测试过了,似乎只要调用回调函数,PHP解释器就会再次启动超时,因此关闭功能最多也会运行3秒。您可以通过在关闭功能中调用'set_time_limit(0)'来防止这种情况,该功能会设置无限的时间限制。我已将这添加到我的答案中。但请注意,对关机执行很长时间的操作通常不是一个好主意,因为除了超时超出之外,还会在脚本停止时执行回调! – 2013-04-05 12:13:43