我使用下面的代碼從另一臺服務器下載zip文件,其中包含超過1,000個圖像。源zip文件正在下載並創建/複製到我的服務器,但代碼似乎停止在這一點上。下面的if else的echo輸出甚至不顯示。shell_exec解壓縮文件大小限制
我最初的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/');
你看過你的Web服務器日誌嗎? –
這是在cron中完成的嗎?如果是這樣,你應該知道,在這裏使用的工具比PHP更好。整個事情可以被壓縮成一個兩行的shell腳本。 – Charles
您在'fclose'處有錯字。 –