У меня есть приложение PHP, которое в настоящее время имеет 5 тыс. Пользователей и будет расти в обозримом будущем. Раз в неделю я запускаю скрипт, который:
- выбирает всех пользователей из базы данных
- перебирает пользователей и выполняет некоторое обслуживание для каждого (включая добавление новых записей в БД)
В последний раз, когда этот скрипт запускался, он только обработал 1400 пользователей перед тем, как умереть из-за 30-секундной ошибки максимального времени выполнения. Одно из решений, о котором я подумал, состояло в том, чтобы основной сценарий по-прежнему выбирал всех пользователей, но вместо выполнения самого процесса обслуживания он выполнял бы асинхронный вызов cURL (1 для каждого пользователя) для нового сценария, который будет выполнять обслуживание для этого конкретный пользователь.
Меня беспокоит то, что вызовы 5k + cURL могут привести к остановке сервера. Это можно исправить, используя очередь сообщений вместо вызовов cURL? У меня нет опыта его использования, но из того, что я прочитал, кажется, что это может помочь. Если да, то какую систему очередей сообщений вы бы порекомендовали?
Некоторая справочная информация:
- это проект Symfony, использующий Doctrine в качестве моего ORM и MySQL в качестве моей БД
- сервер является машиной Windows, и я использую планировщик задач Windows и wget для автоматического запуска этого сценария один раз в неделю.
Любые советы и помощь приветствуются.