PHP/HTTP非无状态
PHP使用cookies、会话或数据库(以及ORMs)来记住数据(因此在单个HTTP请求后不会丢失数据)。然而,在Java中(我指的是servlet等),还有另一种解决方案:简而言之,您可以为一个对象选择不同的作用域(它存在的时间)。除了会话作用域或简单的单个HTTP请求“生命”(作用域)之外,它还可以在整个HTTP服务器运行时“生存”,并可以在HTTP服务器启动时初始化 因此,数据可以在不同的用户/会话之间共享,并且不需要数据库请求(导致整个web应用程序的效率降低)。(我的意思是,当HTTP服务器已经运行时,它们不是必需的——对象及其状态是“记住的”) (我尽我所能减少SQL请求,甚至使用PHP数组进行频繁读取,但实际上从未修改过DB数据) 我在PHP中需要的是一种方法:PHP/HTTP非无状态,php,database,http,data-storage,Php,Database,Http,Data Storage,PHP使用cookies、会话或数据库(以及ORMs)来记住数据(因此在单个HTTP请求后不会丢失数据)。然而,在Java中(我指的是servlet等),还有另一种解决方案:简而言之,您可以为一个对象选择不同的作用域(它存在的时间)。除了会话作用域或简单的单个HTTP请求“生命”(作用域)之外,它还可以在整个HTTP服务器运行时“生存”,并可以在HTTP服务器启动时初始化 因此,数据可以在不同的用户/会话之间共享,并且不需要数据库请求(导致整个web应用程序的效率降低)。(我的意思是,当HTTP
任何人都可以给我一些提示,我如何在PHP中实现这一点,最好是最简单的方法?作为这个答案的序言(我相信您已经掌握了),PHP的执行模型本质上是在请求之间“重新启动”进程,因此仅在PHP中存储任何交叉请求都是不可能的 这就给您留下了一些选择,它们都是数据库的真正“优势”:
HTH有效地处理这类事情实际上就是数据库的作用。我之前用数据库做过。但是,当您有50或100行要从数据库中读取时,您的应用程序将运行得非常慢,因为您必须为每个AJAX请求执行每个SQL请求。因此,我希望有一个SQL请求,为许多AJAX请求保存行(在PHP或其他短时间内),这样DB只使用一次。在Java中,正如我提到的,您可以简单地使用具有适当作用域的对象。使用临时文件并非不可能。通常,它们由操作系统缓冲,您也可以从内存中使用tmpfs文件系统。您还可以选择将内存中的对象存储到php加速器(xcache、eaccelerator)或使用shmem或一些支持库。感谢anttir,我将查看它。Ad 1。我会仔细研究这个解决方案,谢谢。公元2年。我看不出有什么不同的解决方案比使用广告1?公元3年。我的情况不是这样的。请看,问题在于许多SQL请求的事实——DB服务器与Apache/PHP位于不同的物理服务器上(有一些限制)。我想通过只向Apache/PHP发送一个DB响应来克服这个“物理”问题。#2适用于您可能希望在重启期间持久存储数据,但不涉及RDB的用例。不过,根据您所说的,您希望构建更多从其他地方提取的数据缓存——在这种情况下,使用#1可能是您的赢家。只是要注意在数据库中更新后缓存中的数据,以及刷新数据的频率等。HTH.Ok。你能给我举一些更具体的例子来解决#2案件吗?(现在听起来有点抽象)。我会很快地转移话题到noSQL和SQL,这是一个在谷歌的帮助下很容易研究的主题,但在你们的情况下,我想你们可以存储关系完整性等不重要的数据,并且你们不想使用外部RDB服务器。这些数据可能是特定于域的。