用于下载的错误PHP脚本

时间:2011-09-17 09:01:44

标签: php

我有一个简单的脚本:

  $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的情况下完成任务?请给我代码示例,谢谢。

3 个答案:

答案 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文件以查看它何时完成。