我有一个简单的脚本:
$url=file_get_contents($_GET['url']);
$name=$_GET['name'];
file_put_contents('temp.'.$_GET['ext'],$url);
是用http下载文件的脚本。但是文件太大了(~10 Mb),脚本会停止并显示消息:
“致命错误:超过30秒的最长执行时间”
在我的本地服务器上,我可以编辑php.ini并设置300秒,但我无法在Internet上的服务器上执行此操作。如何在不编辑php.ini的情况下完成任务?请给我代码示例,谢谢。
答案 0 :(得分:0)
也许你可以下载部分文件:
$parts = 4;
$file_size = 500000;
$size_per_part = $file_size/$parts;
for($i=1;$i<$parts;$i++){
$url{$i} = file_get_contents('file.text', NULL, NULL, 0, $size_per_part);
}
答案 1 :(得分:0)
如果您无法编辑php.ini文件,请尝试使用以下代码来增加您的;
// check if your web server accepts ini_set, before attempt to change anything
if(!ini_get('safe_mode')) {
set_time_limit(240);
ini_set('max_input_time', 300);
ini_set("max_execution_time", "240");
}
有关 PHP ini_set 的更多信息。
答案 2 :(得分:-1)
没有办法解决脚本超时问题。您需要在后台开始下载并使用其他脚本来检查其进度。
exec( 'wget -b -O temp.' . $_GET['ext'] . ' "' . $_GET['url'] . '" > /dev/null &' );
将在后台执行wget(假设您的托管服务具有wget),您可以检查生成的wget-log
文件以查看它何时完成。