繁体   English   中英

Zend的FlashMessenger-如何将消息发送给另一个用户?

[英]FlashMessenger with Zend - how can I send messages to another user?

我正在尝试使用FlashMessenger通知其他用户事件。 有人知道这是否可能吗?

就像是

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

引用FlashMessenger手册页

FlashMessenger帮助器允许您传递用户可能需要在下一个请求中看到的消息。 为此, FlashMessenger使用Zend_Session_Namespace存储消息以供将来或下一个请求检索

因此,消息存储在会话中-并且会话附加到/对应于用户; 实际上是当前用户。

会话并不意味着存储不同用户之间共享的数据-所以我要说这个组件不能用来通知其他用户事件; 至少不是本地的。


可能的解决方案是:

  • 当您检测到有一条消息必须发送给其他用户时,请将其存储在数据库中(如果目标用户是连接用户,则该表具有指向目标用户的外键;如果可以,则某些表存储该消息被任何人看到)
  • 在每个页面上,您检查该数据库表中是否有必须显示的消息
  • 如果是,则将其放在FlashMessenger中,该FlashMessenger将在当前用户下一页加载时显示它。

我承认有点棘手,而且没有您希望的那么容易。

另一个想法,而不是使用数据库,将是使用某些缓存引擎(例如APC,memcached,...请参见Zend_Cache ,以避免访问数据库。

玩得开心 !

另一种选择是限制您自己的会话处理并将其存储在数据库中(以及用户名)。 然后,您可以访问它并以任何方式对其进行更改。 当我们需要克服托管环境的会话设置的一些疯狂限制(一天有限的会话生存期)时,我们已经实现了此功能。 它的工作原理非常好,并且提供了比默认实现更多的可能性(例如,如果某些特定用户登录,请注销所有用户-例如,以superadmin身份登录,如果在admin部分中更改了用户密码,则注销用户等)。

但是我想这对于您的目的来说有点矫kill过正。 帕斯卡的方式就足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM