Очереди сообщений в Perl, PHP, Python - PullRequest
0 голосов
/ 30 марта 2011

Я занимаюсь проектом, который содержит концепцию очереди сообщений. Сейчас проект на PHP, и он делает больше задержек при отправке или отправке сообщений. Поэтому я предлагаю разработать очередь сообщений на языке Perl или Python. Не могли бы вы предложить, какой из них лучше PHP или Perl или Python?

Ответы [ 3 ]

6 голосов
/ 30 марта 2011

Возможным решением может быть использование Gearman в качестве очереди:

  • Ваш проект PHP будет отправлять сообщения в Gearman в качестве фоновых заданий; и закончить
  • Gearman будет отправлять эти сообщения рабочим
  • Рабочие будут заниматься работой - делать то, что может занять время

Еще одно преимущество: в день, когда вам потребуется несколько серверов для обработки большого количества заданий, у вас уже будет то, что нужно: Gearman будет заниматься балансировкой нагрузки для вас.

2 голосов
/ 30 марта 2011

PHP идеально подходит для реализации простой очереди сообщений.Итак, если ваш текущий код вызывает задержки, то это из-за вашего дизайна, а не из-за некоторых ограничений в PHP.Переключение на другой язык не поможет вам.Плохой код - это плохой код независимо от языка.

Лучшее, что вы можете сделать, - это использовать существующую очередь сообщений.Паскаль рекомендуется Gearman .Я работал с (и очень любил) Beanstalkd .Если вам нужна метрическая тонна возможностей, взгляните на ApacheMQ или RabbitMQ .

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

1 голос
/ 07 апреля 2011

Вот две альтернативы для редуктора

а. Beanstalkd б. MemcacheQ

MemcacheQ http://memcachedb.org/memcacheq/
Добавление и выборка из очереди должны выполняться вручную с использованием кода. Не то, чтобы вы отправляли его в очередь, а MemcacheQ будет выполнять его один за другим. но это очень очень быстро.

Beanstalkd http://kr.github.com/beanstalkd/download.html
Поддерживает много языков.

...