У меня есть XML-файл локально. Он содержит данные с рынка.
Это выглядит примерно так:
<offer id="2113">
<picture>https://anotherserver.com/image1.jpg</picture>
<picture>https://anotherserver.com/image2.jpg</picture>
</offer>
<offer id="2117">
<picture>https://anotherserver.com/image3.jpg</picture>
<picture>https://anotherserver.com/image4.jpg</picture>
</offer>
...
Я хочу сохранить эти изображения в <picture>
локальном узле.
Имеется около 9 000 предложений и около 14 000 изображений.
Когда я перебираю их, я вижу, что изображения копируются с этого другого сервера, но в какой-то момент это дает 504 Gateway Timeout
.
Дело в том, что иногда ошибка выдается после 2000 изображений, иногда более или менее.
Я пытался получить только одно изображение 12 000 раз с этого сервера (т. Е. Только https://anotherserver.com/image3.jpg
), но оно все равно выдало ту же ошибку.
Как я прочитал, чем другой сервер блокирует мои запросы после некоторого количества.
Я пытался использовать PHP sleep(20)
после каждого 100-го изображения, но все равно выдает ту же ошибку (sleep(180) - same
). Когда я попробовал локальное изображение, но с полным путем, он не дал никаких ошибок. Пробовал второй сервер (не локальный) произошло то же самое.
Я использую функцию PHP copy()
для перемещения изображения с этого сервера.
Я только что использовал file_get_contents()
для тестирования, но получил ту же ошибку.
у меня
set_time_limit(300000);
ini_set('default_socket_timeout', 300000);
тоже, но не повезло.
Есть ли способ сделать это без частичных запросов?
Эта ошибка возникает на каком-то одном изображении? Было бы здорово отловить эту ошибку или просто отслеживать задержку ответа, чтобы через некоторое время отправить другой запрос, если это можно сделать?
Есть ли какое-то постоянное время в секундах, в течение которого мне приходится ждать, пока эти запросы не будут обработаны?
И, если возможно, дайте мне ответы без скручивания.
UPDATE
Curl и exec (wget) также не работали. Они оба пошли на ту же ошибку.
Можно ли настроить удаленный сервер, чтобы он не блокировал меня? (Если это так).
p.s. если я сделаю: echo "<img src = 'https://anotherserver.com/image1.jpg'" />
в цикле для всех 12 000 изображений, они отображаются просто отлично.