Асинхронная обработка PHP с помощью beanstalkd.Вы рекомендуете это?
-
06-07-2019 - |
Вопрос
порекомендуете ли вы использовать beanstalkd [ http://kr.github.com/beanstalkd/ ] для
асинхронная обработка в PHP?
Мне нужны отзывы/комментарии о плюсах и минусах от всех, кто использовал эту библиотеку.
Спасибо,
Решение
Я использовал Beanstalk в производстве, а также во время тестирования передавал через него миллионы простых сообщений - обычно массово, но до того, как я покинул компанию, через производственную систему было выполнено более 100 000 задач.Возможно, он все еще работает, и в этом случае сейчас их будут десятки миллионов - или даже больше, если бы они расширили его использование дальше, как я планировал.
Я бы порекомендовал его, так как он имеет ряд отличных преимуществ.
- именованные каналы можно использовать для ограничения количества выполняемых заданий.Я смотрю трубку, основанную на имени хоста машины, которая ограничивает место работы работника - полезно для загруженных файлов, которые хранятся только на определенном сервере).
- Задержки можно использовать для настройки будущих событий.
- Последние версии сервера также поддерживают ведение журналов, что обеспечивает постоянство, хотя у меня он ни разу не падал.
Моей первой задачей, которую я выполнил, была обработка изображений - и выполнение этой работы вне процесса Apache/mod_php позволило мне изменить размер больших изображений, не затрагивая сервер (выходя из строя веб-сервера).При незначительной загрузке очереди миниатюры создавались до того, как страница обновлялась после загрузки.
Существует множество других потенциальных задач, которые также можно обрабатывать асинхронно.
Единственная проблема, с которой я когда-либо сталкивался, заключалась в том, чтобы убедиться, что рабочие завершили работу без происшествий или что любые ошибки были обнаружены, чтобы задание можно было «похоронить», тем самым гарантируя, что задание не будет возвращено в очередь для повторного запуска. (и рабочий снова потерпит крах).
Перезапуск рабочих процессов для очистки памяти также может быть полезен, поскольку PHP менее подходит для длительных процессов.