Асинхронная обработка PHP с помощью beanstalkd.Вы рекомендуете это?

StackOverflow https://stackoverflow.com/questions/1615682

  •  06-07-2019
  •  | 
  •  

Вопрос

порекомендуете ли вы использовать beanstalkd [ http://kr.github.com/beanstalkd/ ] для

асинхронная обработка в PHP?

Мне нужны отзывы/комментарии о плюсах и минусах от всех, кто использовал эту библиотеку.

Спасибо,

Это было полезно?

Решение

Я использовал Beanstalk в производстве, а также во время тестирования передавал через него миллионы простых сообщений - обычно массово, но до того, как я покинул компанию, через производственную систему было выполнено более 100 000 задач.Возможно, он все еще работает, и в этом случае сейчас их будут десятки миллионов - или даже больше, если бы они расширили его использование дальше, как я планировал.

Я бы порекомендовал его, так как он имеет ряд отличных преимуществ.

  • именованные каналы можно использовать для ограничения количества выполняемых заданий.Я смотрю трубку, основанную на имени хоста машины, которая ограничивает место работы работника - полезно для загруженных файлов, которые хранятся только на определенном сервере).
  • Задержки можно использовать для настройки будущих событий.
  • Последние версии сервера также поддерживают ведение журналов, что обеспечивает постоянство, хотя у меня он ни разу не падал.

Моей первой задачей, которую я выполнил, была обработка изображений - и выполнение этой работы вне процесса Apache/mod_php позволило мне изменить размер больших изображений, не затрагивая сервер (выходя из строя веб-сервера).При незначительной загрузке очереди миниатюры создавались до того, как страница обновлялась после загрузки.

Существует множество других потенциальных задач, которые также можно обрабатывать асинхронно.

Единственная проблема, с которой я когда-либо сталкивался, заключалась в том, чтобы убедиться, что рабочие завершили работу без происшествий или что любые ошибки были обнаружены, чтобы задание можно было «похоронить», тем самым гарантируя, что задание не будет возвращено в очередь для повторного запуска. (и рабочий снова потерпит крах).

Перезапуск рабочих процессов для очистки памяти также может быть полезен, поскольку PHP менее подходит для длительных процессов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top