0

PHP使用cookie、会话或数据库(和 ORM)来记住数据(因此在单个 HTTP 请求后它们不会丢失)。但是,在 Java 中(我的意思是 servlet 等)还有另一种解决方案:简而言之,您可以为一个对象选择不同的范围(它存在多长时间)。除了会话范围或简单的单个 HTTP 请求“生命”(范围)之外,它可以在整个 HTTP 服务器运行时“存活”,并且可以在 HTTP 服务器启动时进行初始化。

因此可以在不同的用户/会话之间共享数据,并且不需要数据库请求(导致整个 Web 应用程序的效率降低)。(我的意思是当 HTTP-Server 已经运行时不需要它们 - 对象及其状态是“记住的”)。

(而且我尽我所能减少 SQL 请求,甚至使用 PHP 数组进行频繁读取,但实际上从未修改过数据库数据)。

我在 PHP 中需要的是一种方法:

  1. 记住(存储在某处)可以在许多用户之间更改和共享的数据,但不能存储到数据库中
  2. 在不使用会话(或 cookie)的情况下,我希望为许多请求提供多个数据信息(等等。AJAX 不是单一的,而是对同一个 URL 的许多请求),当然这些请求必须存储在其他地方一段时间。例如,我想用一个 SQL 请求读取所有数据(行),在 PHP 中将它们记住一小段时间,然后,一行一行地发送响应,例如,将每一行单独响应到适当的 AJAX功能

任何人都可以给我一些提示,我怎样才能在 PHP 中实现这一点,最好是最简单的方法?

4

1 回答 1

1

作为这个答案的序言(我相信你已经掌握了),PHP 的执行模型本质上是“重新启动”请求之间的过程,因此仅在 PHP 中存储任何交叉请求是无法实现的。

这给您留下了一些选择,它们都是数据库的真正“优势”:

  1. 使用简单的键值对内存持久层,如 memcached 或 Redis
  2. 使用具有更多结构的 noSQL 解决方案(如果需要这种一致性),但它仍然在内存中工作,并且比 RDB 更快
  3. 使用 RDBMS,因为它会很好地工作,并且如果在中等硬件上推翻精心设计的模式所需的流量可能比您想象的要高得多

高温高压

于 2013-02-07T11:42:59.707 回答