我正在使用下面的代码从另一台服务器下载一个包含 1,000 多个图像的 zip 文件。源 zip 文件正在下载并创建/复制到我的服务器,但代码似乎在此时停止。下面 if else 的回声输出甚至不显示。
我最初将 CURLOPT_TIMEOUT 设置为 240,但这还不够长。我会收到 curl 超时错误。由于 zip 文件接近 100MB,我认为大约需要 15 分钟才能完成。所以我将 CURLOPT_TIMEOUT 设置为 1200,因为源 zip 大小每天都会变化。
关于它为什么停止工作的任何想法?是否有需要更改的设置?
$source_photos_file = 'source_photos_file.zip';
$curl = curl_init();
$destination_photos_file = fopen($_SERVER['DOCUMENT_ROOT'].'/files/photos.zip', 'w');
curl_setopt($curl, CURLOPT_URL, FTP_URL.$source_photos_file); #input
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl, CURLOPT_TIMEOUT, 1200);
curl_setopt($curl, CURLOPT_FILE, $destination_photos_file); #output
if (curl_exec($curl) === false)
{
echo '<p>Curl error: ' . curl_error($curl). ' - error # '.curl_errno($curl).'</p>';
}
else
{
echo '<p>Done without any errors</p>';
}
curl_close($curl);
fclose($destination_photos_file);
$photos_unzip_result = shell_exec('unzip -P password '.$_SERVER['DOCUMENT_ROOT'].'/files/photos.zip -d '.$_SERVER['DOCUMENT_ROOT'].'/files/pics_test/');