我有一个脚本,它从服务器流式传输文件并将收集的数据一次保存为小块,以防止内存溢出,在主机服务器上。
我有没有提到它是一个 PHP 脚本?
这就是它的工作原理
//loop while data exists on the clients server side file.
while (!feof($xml_fp)) {
//grab data in proportions of specified chunk
//write the the collected chunk locally
//if there's an error, exit (improve error handling for final code)
$result = fwrite($local_fp, fread($xml_fp, $size), $size);
if($result === false){
echo"<h1> ERROR </h1>";
exit();
}
else {
$progress += $result;
ob_flush();
flush();
?>
//state amount of data downloaded thus far
<script>
$('#progress').html(' ');
$('#progress').append(<?php echo (float)$progress/(1024*1024) ?>);
</script>
<?php
//if all goes well, increase time limit by a second
set_time_limit(1);
}
}//while loop ends here
该脚本在本地运行良好。我将不得不在具有不同大小文件的实时服务器上运行大量测试,以确保没有任何问题,但是文件大小可以从 50mb 到 200mb 不等。
请记住 fread 和 fwrite 函数的开销很大,我预计下载速率不会超过 40 kbps,并且我估计的平均下载时间因此脚本运行的持续时间约为 10 分钟。
问题:服务器是否通常配置为在检测到这么长的脚本运行时间时调用犯规?请注意,这不是专用服务器,只是磨机共享资源的运行,因此我无法通过 execute() 调用等使用 wget 启动相同的服务器。