我目前正在管理PHP"事件"在单个实例中。这很好用,并且在我的系统中使用类似于Laravel's events provider的东西正确实现。
我现在的问题涉及一个系统,我需要在不同的实例/用户之间调度事件。
例如,我有一个由多个用户组成的帐户。在初始加载应用程序后,每个用户都在会话中缓存帐户设置。
现在,如果用户正在对帐户设置进行修改,我希望将活动发送给其他用户,以便他们更新设置。
目前,我正在考虑这些解决方案:
- 将事件存储在数据库表中,每个用户定期检查值,但这将需要额外的SQL加载,并会使缓存系统过时。
- 另一种解决方案是使用REDIS 存储标志。每个用户都可以定期检查标志的值并重新加载设置是必需的。它与上面的SQL解决方案类似,但使用REDIS会更有效。但是,实现会更复杂,并且可能是为此特定事件定制的。
-
我也开始研究在PHP实例之间共享数据的方法,并发现这个question建议使用共享内存。我对这个概念不是很熟悉,我还在看它,但我想可以使用它构建一个跨实例事件系统。
- 在PHP中使用 memcached服务器。我对此并不熟悉,仍在评估围绕它构建事件调度程序系统的可能性。
- 使用 message queue server 。仍在评估可能性并且还检查PHP中现有的基于事件的系统是用它构建的。
醇>
我可以使用其他解决方案在实例之间分发此类事件吗?
修改:
如果共享内存在同一台服务器上完成,命题3已被拒绝,我正在为应用程序端使用服务器群集。