ом (конкретно версия 6.3.2) запроса размером более чем 1МБ? У меня (на 4-х окружениях одно и то же) если прикладываю в multipart запрос файл или несколько файлов размером в сумме более 1МБ, то запрос зависает, и в конце концов как одупляется - выдает ошибку:
[GuzzleHttp\Exception\ConnectException]
cURL error 52: Empty reply from server (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) (0)
/var/www/bitrix/local/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:185
Если файл менее 1МБ - все нормально. Голым курлом без гузла если слать большие файлы - тоже проблем нет. Причиной ошибки является проверка на размер запроса в методе CurlFactory::applyBody() https://github.com/guzzle/guzzle/blob/6.3.2/src/Handler/CurlFactory.php#L253, в которой если запрос более 1МБ, то body отправляется как строка. Но ведь из - за этого сам запрос же не должен зависать!
Решил проблему костылем, путем насильного добавления header Content-Length = 1 в запросе, но такое решение мне не нравится.
$client = new \GuzzleHttp\Client();
$options = [
'headers' => [
'Content-Length' => 1
],
'multipart' => [
[
'name' => 'files[]',
'contents' => fopen($filePath, 'r'),
],
]
];
$response = $client->request('POST', $url, $options);
Может быть кто сталкивался, или знает в чем кроется причина проблемы, или у кого есть мысли на этот счет?
Напиши в ишью на гитхабе. Интересный случай
Обсуждают сегодня