Zend ile FlashMessenger - nasıl başka bir kullanıcıya mesaj gönderebilir?

2 Cevap php

Ben bir olayın başka bir kullanıcıya bildirmek için FlashMessenger kullanmaya çalışıyorum. Bu mümkün olup olmadığını biliyor mu?

Gibi bir şey

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

2 Cevap

Alıntı manual page of the FlashMessenger:

The FlashMessenger helper allows you to pass messages that the user may need to see on the next request. To accomplish this, FlashMessenger uses Zend_Session_Namespace to store messages for future or next request retrieval.

Yani, mesajlar oturumda saklanır - ve bir oturum / a kullanıcıya karşılık bağlanmıştır; Geçerli kullanıcı, aslında.

Oturum farklı kullanıcılar arasında paylaşılan veri depolamak anlamına gelmez - bu yüzden bu bileşen bir olayın diğer kullanıcılara bildirmek için kullanılan olamaz söyleyebilirim; değil doğal olarak, en azından.


A possible solution would be :

  • Eğer diğer kullanıcılara gitmek gerekir bir mesaj olduğunu tespit edince, (some table with a foreign key pointing to the destination user, if the destination user is a connected-user ; some table storing the message, if it can be seen by anyone) veritabanında saklamak.
  • görüntülenecek olan bir mesaj ise her sayfada, o DB tablo kontrol
  • evet ise, mevcut kullanıcıdan sonraki sayfa yük üzerinde gösterilecek, hangi FlashMessenger koydum.

Biraz zor, ve umut ediyorum kadar kolay değil, itiraf ediyorum ...

Başka bir fikir, bunun yerine bir veritabanı kullanarak, memcached APC gibi bazı Önbellekleme motoru (,, ... DB çarpmamak için, Zend_Cache bakın kullanmak olacaktır.

Eğlenin!

Diğer seçenek kendi oturum yönetimini implemment ve (kullanıcı adı ile birlikte) DB saklamak olacaktır. Daha sonra erişmek ve herhangi bir şekilde değiştirebilir. Biz ev sahipliği ÇEVRE oturum kurulum bazı çılgın kısıtlamalardan (bir günlük sınırlı seans süresi) geçmiş olsun için gerektiğinde biz bu uyguladık. Bu gerçekten iyi çalışıyor ve varsayılan uygulama üzerinde fazla seçenek sunuyor (- örneğin veya SignOut kullanıcı için SuperAdmin onun şifre admin bölümünde, vs değişti ise bazı belirli kullanıcı işaretler varsa gibi tüm kullanıcılar oturumu).

Ama bu amaçlar için biraz overkill sanırım. Ve Pascal yol yeterince iyi olurdu.