問題大量文件:發送通過HTTP POST和捲曲
我有通過HTTP POST從一個Web服務器發送可靠的大量文件到另一個困難。
我注意到文件傳輸的成功取決於我選擇發送的文件的大小和數量。
我構成的成功傳輸是,如果從源服務器發送的所有文件都出現在接收服務器的目錄中。
//sender script
$ch = curl_init();
$data = array(
'file1' => '@/var/www/html/uploadtest/largerfile.zip',
'file2' => '@/var/www/html/uploadtest/largerfile.zip',
'file3' => '@/var/www/html/uploadtest/smallerfile.zip'
);
curl_setopt($ch, CURLOPT_URL, 'http://domain.com/test/reciever.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res = curl_exec($ch);
if(curl_exec($ch)){
print "Error: " . curl_error($ch);
}
echo $res;
//recieving script
print_r($_FILES); //outputs as blank array on failed transfer
move_uploaded_file($_FILES["file1"]["tmp_name"], "file1.zip");
move_uploaded_file($_FILES["file1"]["tmp_name"], "file2.zip");
move_uploaded_file($_FILES["file1"]["tmp_name"], "file3.zip");
隨着目前的文件被髮送到他們沒有到達他們的目的地。如果我刪除一個largefile.zip那麼文件傳輸成功。
我在通過打印尋找錯誤響應$ res但我沒有看到任何傳輸失敗。 * curl_errno *也沒有檢測到任何東西。
背景:
我一直建議以前使用FTP,但我會使用Web API只接受POST。我需要傳輸的文件也可能在50mb左右。
我也試圖改變以下php.ini中設置:
- 的post_max_size:100M
- upload_max_size:60M
不知道這是否有助於你的問題,但你可能想看看'curl_multi_init':http://php.net/manual/en/function.curl-multi-init.php –
多久轉移失敗之前通常需要轉移嗎?它可能與60年代的超時有關嗎? –
你正在上傳文件到你自己的服務器,還是你上傳的服務器不在你的控制之下? – hakre