我正在使用一种上传工具,可以将大文件(1GB-4GB)上传到FTP服务器。我使用HTML5将上传的文件切成1MB的块,然后将每个块上传到temp文件夹。只要上传了每个块,PHP脚本就会从这些块中创建文件:
if (($fp = fopen(UPLOAD_DIR.$fileName, 'w')) !== false) {
for ($i = 1; $i <= $totalFiles; $i++) {
fwrite($fp, file_get_contents($tempDir.'/'.$fileName.'.part'.$i));
}
fclose($fp);
}
一切都适用于较小的文件大小(经过1GB-1.5GB的文件测试),但是一旦我上传非常大的文件(例如3GB),我的PHP脚本就会因504网关超时而停止。将'max_execution_time'
在我的php.ini被设置为90。有什么办法避免这种情况下,还是有办法加快脚本,该脚本创建该文件的504超时?我可以尝试更改“ max_execution_time”,但这似乎不是完美的解决方案。有什么建议?
编辑:脚本在Linux系统上运行
我不知道您的服务器正在运行什么操作系统,但是如果它是linux,则可以使用例如在命令行中直接尝试exec
。
就像是:
exec('cat ' . $tempDir . '/' . $fileName . '.part* > ' . UPLOAD_DIR . $fileName);
escapeshellcmd()
如果您不控制变量,则可能需要使用它们。
如果.part*
没有给您正确的顺序,您还可以在循环中生成部分文件名的列表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句