Я написал скрипт PHP, который использует CURL для передачи больших файлов с одного сервера Windows на другой. Оба работают на IIS, у которого ограничение на загрузку файлов ограничено 2 ГБ. Мой процесс отлично подходит для файлов размером менее 2 ГБ. Однако он не работает для файлов> 2 ГБ.Curl chunked uploads with PHP
Я слышал, что CURL может иметь возможность отправлять файлы в куски, что может решить мою проблему. Однако я не могу найти хороших примеров того, как это сделать. Мой текущий рабочий код размещен ниже. Кто-нибудь знает, как изменить его, чтобы отправлять мои файлы в куски (т. Е. Куски 100 МБ)?
$postVars = array("file1" => $fileContents1,
"file2" => $fileContents2,
"outputPath" => $outputPath);
// Initializing curl
$ch = curl_init();
// Configuring curl options
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_VERBOSE, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_BUFFERSIZE, '64000');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSLVERSION, '3');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: multipart/form-data'));
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_POSTFIELDS,$postVars);
echo "Sending files...\n";
curl_setopt($ch, CURLOPT_TIMEOUT, 9999);
if(curl_exec($ch) === false)
{
echo 'Curl error: ' . curl_error($ch);
}
else
{
echo 'Operation completed without any errors';
}
$info = curl_getinfo($ch);
print_r($info);
curl_close($ch);
AFAIK PHP не может надлежащим образом обрабатывать загрузку файла размером более 2 ГБ. Я потратил много времени на создание обработчика загрузки python, чтобы обойти это. – Sammitch
Так что этого не может быть сделано? Должен быть какой-то способ, с помощью которого PHP может обрабатывать> 2 ГБ загрузки. – scott80109
Я не помню специфику, но у PHP есть что-то, что забилось в его ядре даже в 64-битных версиях, и [я не думаю, что оно еще было решено] (https://bugs.php.net/ bug.php? id = 27792), если вы не хотите скомпилировать собственный двоичный файл PHP. – Sammitch