Привет всем!
У меня возникли проблемы с выполнением тысяч и тысяч запросов к веб-службе (eBay), у меня ограничение в 5 миллионов вызовов в день, поэтому с этой целью проблем нет.
Однако я пытаюсь выяснить, как обрабатывать от 1000 до 10000 запросов каждую минуту или каждые 5 минут.
В основном поток:
1) Получить список предметов из базы данных (от 1000 до 10000 предметов)
2) Сделайте запрос API POST для каждого элемента
3) Принять возврат данных, обработать данные, обновить базу данных
Очевидно, что один экземпляр PHP, выполняющий это в цикле, был бы невозможен.
Мне известно, что PHP не является многопоточным языком.
Я попробовал решение CURL, в основном:
1) Получить список предметов из базы данных
2) Инициализировать сеанс мульти керла
3) Для каждого элемента добавить сеанс скручивания для запроса
4) выполнить сеанс multi curl
Таким образом, вы можете представить, что происходит 1 000–10 000 запросов GET ...
Это было нормально, примерно 100-200 запросов происходили примерно через минуту или две, однако только 100-200 из 1000 элементов фактически обрабатывались, я думаю, что я достигаю некоторого ограничения Apache или MySQL?
Но это добавляет задержку, это почти как выполнение DoS-атаки на себя.
Мне интересно, как бы вы справились с этой проблемой? Что делать, если вам нужно было сделать 10 000 запросов веб-службы и 10 000 обновлений MySQL на основе данных, возвращаемых веб-службой ... И это нужно сделать как минимум за 5 минут.
Я использую PHP и MySQL с Zend Framework.
Спасибо!