Я извлекаю из таблицы базы данных набор из почти 1500 данных, и для каждой из этих данных я должен вызывать конечную точку через CURL следующим образом:
for($i=0; $i <1500; $i++) {
$headers = [
'Host: www.hostname.it',
'Accept: application/json, text/javascript, */*; q=0.01',
'X-Requested-With: XMLHttpRequest',
'Accept-Language: it-it',
'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
'Origin: https://www.desiderimagazine.it',
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30',
'Connection: close',
'Referer: https://www.hpstname.it/page/registrazione?utm_source=gate2000&utm_medium=display&utm_campaign=ghh_gen18_regist&utm_content=leadcampaign2',
'Content-Length: '.mb_strlen($post_fields, '8bit')
];$ch = curl_init($endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_ENCODING , "");
curl_setopt($cu, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/601.6.17 (KHTML, like Gecko) Version/9.1.1 Safari/601.6.17");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 24000);
curl_setopt($ch, CURLOPT_CONNECTIONTIMEOUT, 24000);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post_fields); //Post Fields
$result = curl_exec($ch);
// .. here I save the result on database
}
Я запускаю скрипт, вставляя его URL в браузер, и он работает нормально (я правильно вижу результаты в базе данных и ответ конечной точки) для первых 20-30 данных, более или менее. После этого я систематически получаю
Ошибка 504 — Тайм-аут ошибки шлюза
Я подозреваю, что это мог быть способ, которым я выполняю это, но должна быть некоторая конфигурация, которую я могу изменить в своем коде, чтобы исправить это.
Спасибо
Задача ещё не решена.
Других решений пока нет …