我有一个用于计算横幅广告展示次数并返回图片的php脚本(file.php),结尾如下:
readfile('http://somedomain.com/banner.jpg');
mysql_close();
exit;
此文件非常常用,有时当图像托管在外部服务器上时,加载速度很慢。
因此,为了减少我的托管使用量,我认为只在此脚本上添加最大执行时间, 例如:如果传递5-10秒,脚本将关闭
我认为这是可能的,但是如何?
答案 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;
答案 1 :(得分:1)
您可以使用 set-time-limit 功能在脚本顶部设置执行时间。
答案 2 :(得分:0)
在php.ini中更改max_execution_time或添加到脚本ini_set(' max_execution_time',5);