Код: Выделить всё
$curl = $this->curlFactory->create();
$curl->setConfig(
[
CURLOPT_TIMEOUT => 30,
CURLOPT_USERAGENT => $this->getUserAgent(),
CURLOPT_SSL_VERIFYHOST => 0,
]
);
$curl->write('POST', $url, '1.1', $this->getHeaders($payload), $payload);
$curlResponse = $curl->read();
$statusCode = $curl->getInfo(CURLINFO_HTTP_CODE);
$headerLength = $curl->getInfo(CURLINFO_HEADER_SIZE);
$curl->close();
Вот считывание соответствующих строк из tcpdump когда тайм-аут установлен на 30 секунд
Код: Выделить всё
22:21:10.658883 [redacted] Flags [.], ack 1506, win 497, length 0
22:21:41.091462 [redacted] Flags [P.], seq 4531:7193, ack 1506, win 501, length 2662
Код: Выделить всё
22:23:26.620425 [redacted] Flags [.], ack 1506, win 497, length 0
22:23:46.340089 [redacted] Flags [P.], seq 1506:1530, ack 4531, win 457, length 24
Код: Выделить всё
22:27:54.870698 [redacted] Flags [.], ack 1506, win 495, length 0
22:28:11.739022 [redacted] Flags [P.], seq 1506:1530, ack 4531, win 457, length 24
Мне кажется, что пока адаптер Curl пытается прочитать ответ от сервера, он фактически блокирует получение ответа сервера. Это происходит не при каждом запросе. Это происходит с перерывами, но его можно воспроизвести после нескольких попыток.
Есть ли у кого-нибудь какие-нибудь советы о том, как решить эту проблему? Спасибо!
Я попытался отправить запрос на скручивание с помощью адаптера Curl Adobe Commerce. Я ожидал получить ответ от сервера. Вместо этого ответ от сервера задерживался до тех пор, пока не истечет время ожидания функции $curl->read(), а затем был получен немедленно.
Подробнее здесь: https://stackoverflow.com/questions/787 ... -a-timeout