我想创建一个Web应用程序,其模型在HTTP请求之间保持不变。根据我的理解,像PHP这样的语言将每个HTTP请求视为一个全新的连接,除了一些全局变量,如SESSION;因此,每次用户更改页面时,我的所有PHP类都会再次加载到内存中(并且每个AJAX请求都会这样做) - 每次都要求我从数据库构建。
我错了,还是我试图在广场上制作圆圈? Memcached似乎是一个很好的解决方案,可以将我的模型保存在页面请求之间的内存中,但它仍然需要加载缓存。 PHP CLI看起来很有希望,但在进行了更多研究之后,它似乎比它的价值更麻烦。有什么建议吗?
答案 0 :(得分:4)
您应该避免在Web应用程序中要求持久状态; HTTP是无状态的,您需要围绕它设计业务逻辑。此外,PHP不是非常安全的内存泄漏,因为它不是作为守护进程或长时间运行。您也不应该在PHP变量中维护信息数据库。您可以在memcache中缓存昂贵的查询结果,并以非常小的延迟检索它们。
您可以序列化模型,将其存储在会话(或内存缓存)中,并在下一个请求中对其进行反序列化,以便将相关变量保持在请求之间的范围内。如果您分享一些关于应用程序细节的更多信息,也许我们可以帮助您找出解决此问题的最佳方法。
答案 1 :(得分:1)
我同意应该尽量避免在请求之间共享状态。但在极少数情况下,例如通过HTTP实现一个简单的消息队列,最好有这个功能。
对于php,可以通过php_shmop扩展名使用IPC。
对于nodejs,我找到了this