PHP очищает несколько страниц на веб-сайте с помощью cURL, которые возвращают значения только после отправки формы

#php #curl

#php #curl

Вопрос:

На веб-сайте есть 250 продуктов, и мне нужно получить количество для этих продуктов. Проблема в том, что количество не отображается, пока я не отправлю форму. Теперь я могу отправить эту форму, но проблема в том, что после очистки 10-20 продуктов возникает что-то вроде узкого места, когда этот веб-сайт возвращает это сообщение:

 Sorry, we have too many customers, please come back later.
  

Итак, в принципе, ясно, что я отправляю слишком много запросов. Но если я использую usleep между запросами, время для очистки составляет около 15 минут … я предполагаю, что сервер задерживает ответ на мои запросы.

Итак, в основном мой вопрос таков: что я могу сделать, чтобы отправить эту форму без остановки или задержки?

Комментарии:

1. создайте задание cron, которое обрабатывает следующий продукт каждые 15 минут. но было бы проще попросить владельца веб-сайта предоставить api, если вы хотите работать с его данными

2. Не примет, слишком консервативный, любую другую идею о том, что я мог бы сделать? (также мне нужно, чтобы продукты перезаписывались каждый час, поэтому по одному каждые 15 минут этого не будет : (

3. Это может быть связано с тем, что они используют что-то вроде cookie или некоторых скрытых полей в форме со значениями, которые они проверяют, вы можете немного углубиться в http-запрос и ответ, чтобы узнать, как они могут обнаруживать ваши запросы.

Ответ №1:

Итак, в основном мой вопрос таков: что я могу сделать, чтобы отправить эту форму без остановки или задержки?

создайте свою собственную локальную кэшированную копию всех продуктов и запустите демон или cronjob, который постоянно (но медленно) обновляет ваш собственный локальный кэш, что должно сделать ваш кэш максимально приближенным к актуальному, не превышая предельной скорости. и всякий раз, когда вам нужно быстро проверить все 250 продуктов, используйте свой собственный локальный кэш, а не текущую версию. PS: ограничение скорости, вероятно, зависит от IP-адреса, если скорость обновления 1 IP недостаточна, вы, вероятно, можете просто продолжать добавлять больше IP-адресов для средства обновления кэша, пока скорость обновления кэша не станет приемлемой .. (.. и если вы ищете дешевое место для получения большего количества IP-адресов, я могу порекомендоватьhttps://cloudatcost.com/developer-cloud — или, если вы ищете что-то бесплатное, вы можете попробовать torproject https://www.torproject.org / — но многие веб-сайты блокируют узлы выхода tor)