FlashMessenger с Zend - как я могу отправлять сообщения другому пользователю? - PullRequest
1 голос
/ 17 сентября 2009

Я пытаюсь использовать FlashMessenger, чтобы уведомить другого пользователя о событии. Кто-нибудь знает, возможно ли это?

Что-то вроде

$flashMessenger->addMessage( array('status'=> '', 'message'=> 'Hello!'), $user);

Ответы [ 2 ]

1 голос
/ 17 сентября 2009

Цитирование справочной страницы FlashMessenger :

Помощник FlashMessenger позволяет вам передавать сообщения, которые пользователь может нужно посмотреть по следующему запросу. к Для этого FlashMessenger использует Zend_Session_Namespace хранить сообщения для будущего или следующего запроса поиск .

Таким образом, сообщения сохраняются в сеансе - и сеанс присоединяется к пользователю или соответствует ему; текущий пользователь, на самом деле.

Сессия не предназначена для хранения данных, которые совместно используются разными пользователями - поэтому я бы сказал, что этот компонент нельзя использовать для уведомления других пользователей о событии; не изначально, по крайней мере.


Возможное решение будет:

  • при обнаружении сообщения, которое должно быть отправлено другим пользователям, сохраните его в базе данных (некоторая таблица с внешним ключом, указывающая на конечного пользователя, если конечный пользователь является подключенным пользователем; некоторое хранение таблицы сообщение, если оно может быть просмотрено кем-либо) .
  • на каждой странице вы проверяете эту таблицу БД, если это сообщение, которое должно отображаться
  • если да, вы помещаете его в FlashMessenger, который будет отображаться при следующей загрузке страницы от текущего пользователя.

Немного сложно, и не так просто, как вы надеетесь, я признаю ...

Другая идея, вместо использования базы данных, заключалась бы в использовании некоторого механизма кэширования (например, APC, memcached, ... см. Zend_Cache, чтобы избежать попадания в БД.

Веселись!

0 голосов
/ 18 сентября 2009

Другой вариант - реализовать собственную обработку сеанса и сохранить ее в БД (вместе с именем пользователя). Вы можете получить к нему доступ и изменить его любым способом. Мы реализовали это, когда нам нужно было преодолеть некоторые сумасшедшие ограничения (время жизни сессии ограничено одним днем) в настройке сеанса размещенной среды. Он работает действительно хорошо и предлагает гораздо больше возможностей по сравнению с реализацией по умолчанию (например, выход из системы всех пользователей, если какой-то конкретный пользователь войдет в систему - например, superadmin или выход из системы, если его пароль изменен в разделе администратора, и т. Д.).

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

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