问题大量文件:发送通过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