如何限制PHP脚本的最大执行时间

时间:2014-04-04 16:08:03

标签: php time limit execution

我有一个用于计算横幅广告展示次数并返回图片的php脚本(file.php),结尾如下:

readfile('http://somedomain.com/banner.jpg');
mysql_close();
exit;

此文件非常常用,有时当图像托管在外部服务器上时,加载速度很慢。

因此,为了减少我的托管使用量,我认为只在此脚本上添加最大执行时间, 例如:如果传递5-10秒,脚本将关闭

我认为这是可能的,但是如何?

3 个答案:

答案 0 :(得分:2)

我刚刚测试了set_time_limit(),但显然是readfile('http ...');不尊重此设置。脚本执行的时间超过了通过set_time_limit设置的时间,但在执行下一个“脚本内”语句之前中止了。
但是自从php 5.2.1以来,http url包装器有一个上下文选项timeout,这似乎可以解决问题。

mysql_close();
$ctx = stream_context_create( array(
    'http' => array(
        'timeout'  => 4.7 // in seconds
    )
);
readfile('http://somedomain.com/banner.jpg', false, $ctx);
exit;

请参阅http://docs.php.net/context.http

答案 1 :(得分:1)

您可以使用 set-time-limit 功能在脚本顶部设置执行时间。

答案 2 :(得分:0)

在php.ini中更改max_execution_time或添加到脚本ini_set(' max_execution_time',5);