我正在使用上传工具将大文件(1GB - 4GB)上传到FTP服务器。我使用HTML5将上传的文件切成1MB块,然后将每个块上传到临时文件夹。一旦上传了每个块,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网关超时停止。我的php.ini中的'max_execution_time'
设置为90.在这种情况下有没有办法避免504超时或者是一种加速创建文件的脚本的方法?我可以尝试更改'max_execution_time',但这似乎不是完美的解决方案。有什么建议吗?
编辑:脚本在Linux系统上运行
答案 0 :(得分:1)
我不知道您的服务器正在运行什么操作系统,但如果它是linux,您可以直接从命令行使用例如exec
进行尝试。
类似的东西:
exec('cat ' . $tempDir . '/' . $fileName . '.part* > ' . UPLOAD_DIR . $fileName);
如果您不控制变量,则可能需要对变量使用escapeshellcmd()
。
如果.part*
没有为您提供正确的订单,您还可以在循环中生成部分文件名列表。