以下のコードを使用して、1,000 を超える画像を含む別のサーバーから zip ファイルをダウンロードしています。ソース zip ファイルがダウンロードされ、サーバーに作成/コピーされていますが、コードはその時点で停止しているようです。以下の if else からのエコー出力も表示されません。
私はもともと CURLOPT_TIMEOUT を 240 に設定していましたが、それでは十分な長さではありませんでした。curl タイムアウト エラーが発生します。zip ファイルは 100MB 近くあるので、完了するまでに約 15 分かかると考えました。ソースのzipサイズは日によって異なるため、CURLOPT_TIMEOUTを1200に設定しました。
なぜそれが機能しなくなるのかについて何か考えはありますか? 変更が必要な設定はありますか?
$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/');