3

我需要将数据作为数组加载到 PHP 中的内存中。但是在 PHP 中,如果我写 $array= array("1","2"); 在 test.php 中,每次用户请求时都会初始化这个 $array 变量。如果我们通过单击 100 次浏览器刷新按钮请求 test.php 100 次,那么这个 $array 变量将被执行 100 次。

但我只需要为第一次请求执行一次 $array 变量,并且 test.php 的后续请求不能执行 $array 变量。但只能使用该内存位置。我如何在 PHP 中做到这一点。

但是在 JAVA SEVRVLET 中它很容易执行,只需在一次执行 servlet 生命周期方法的 init() 方法和该 servlet 的后续请求中写入 $array 变量不执行 init() 方法而是 service() 方法但 service()方法总是使用那个 $array 内存位置。

我只想初始化 $array 变量一次,但在 PHP 中使用后续请求中的内存 loc。PHP 中是否有任何可能性?

4

5 回答 5

3

PHP 的工作方式与 Java Servlet 容器不同。每个新请求基本上都会启动一个全新的 PHP 解释器实例,因此您没有跨请求的全局地址空间(您确实有一个每个用户的会话,该会话通常被持久化到一个文件中,以便在一个用户的请求之间保留变量) .

可能接近它的事情是使用带有 PHP的memcached 作为您的“数据库”,但是每次需要阵列时,您都必须向 memcached 服务器发送请求。这就是为什么我认为你的数组(如果它没有改变)最好在 PHP 文件中保存和初始化。

于 2010-05-04T12:49:49.050 回答
1

使用会话

当用户打开 test.php 并在该会话中设置数组时启动会话

<?php
session_start();

if(!isset($_SESSION['user_action'])){ $_SESSION['user_action'] = array("1","2"); } ?>

该代码将验证是否设置了会话变量“user_action”,如果未设置,则将使用该数组进行设置。

然后您可以稍后更改该变量。

于 2010-05-04T12:42:56.520 回答
1

所有变量在请求关闭时都被销毁,没有内置机制可以在 php.ini 中执行您想要的操作。

于 2010-05-04T12:45:31.417 回答
0

PHP 有不同的执行方式。
一般来说,在PHP中是不可能的,没关系。

于 2010-05-04T12:42:26.557 回答
-2

您可以尝试以下方法:

<?php
/* test.php */
if (empty($GLOBALS['array'])) {
    $GLOBALS['array'] = array("1", "2");
}
?>
于 2010-05-04T12:43:37.070 回答