3

我想创建一个具有在 HTTP 请求之间持续存在的模型的 Web 应用程序。据我了解,PHP 等语言将每个 HTTP 请求视为一个全新的连接,除了一些全局变量,如 SESSION;所以每次用户更改页面时,我的所有 PHP 类都会再次加载到内存中(每个 AJAX 请求也会这样做) - 每次都需要我从数据库构建。

我错了还是我试图让一个圆圈适合一个正方形?Memcached 似乎是一个很好的解决方案,可以在页面请求之间将我的模型保存在内存中,但它仍然需要加载缓存。PHP CLI 似乎很有希望,但在对其进行了更多研究之后,它似乎比它的价值更麻烦。有什么建议么?

4

2 回答 2

4

您应该避免在 Web 应用程序中要求持久状态;HTTP 是无状态的,您需要围绕它设计业务逻辑。此外,PHP 不是非常安全的内存泄漏,因为它不打算充当守护程序或长时间运行。您也不应该在 PHP 变量中维护信息数据库。您可以在 memcache 中缓存昂贵的查询结果,并以非常短的延迟检索它们。

您可以序列化您的模型,将其存储在会话(或内存缓存)中,并在下一个请求时对其进行反序列化,以便将相关变量保持在请求之间的范围内。如果您分享更多有关应用程序细节的信息,也许我们可以帮助您找出处理此问题的最佳方法。

于 2011-02-20T04:52:25.600 回答
1

我同意应该尽量避免在请求之间共享状态。但在极少数情况下,例如通过 HTTP 实现一个简单的消息队列,最好有这个特性。

对于 php,可以通过 php_shmop 扩展使用 IPC。

对于nodejs,我发现了这个

于 2013-03-29T16:39:08.420 回答