Передача данных между запущенными скриптами PHP - PullRequest
0 голосов
/ 20 февраля 2010

Для того, чтобы несколько запущенных PHP-скриптов (от 10 до 100) могли общаться друг с другом, какое наименее ресурсоемкое решение?

  • Мониторинг плоских файлов на предмет изменений
  • Продолжать выполнять запросы к БД для проверки новых данных

Другие техники, о которых я слышал, но никогда не пробовал:

  • Общая память (APC или основные функции)
  • Очереди сообщений (Active MQ и компания)

Ответы [ 2 ]

2 голосов
/ 20 февраля 2010

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

Очереди сообщений, о которых я не знаю много, но когда выбор между базами данных и простыми файлами, я бы выбрал базу данных из-за проблем параллелизма.

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

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

2 голосов
/ 20 февраля 2010

Трудно ответить, не зная:

  • Сколько данных они отправят в каждом сообщении (2 байта или 4 мегабайта)?
  • Будут ли они работать на одной машине? (Это похоже на «да», иначе вы бы не рассматривали совместную память)
  • Каковы требования к производительности (одно сообщение в минуту или миллион в секунду)?
  • Какой ресурс для вас наиболее важен?

И так далее ...

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

Но, опять же, трудно сказать наверняка без дополнительной информации о приложении.

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