每个人都有相同的变量吗?

时间:2011-03-03 20:13:50

标签: php variables static

我想知道,有没有办法让某种变量成为'静态',这意味着它对于php中的所有用户都是一样的? 我知道在php中的函数中有一个静态变量,但这不是我想要的。

我希望每个人都能分享一个我会根据用户的需求进行操作的对象。 或者,另一个与我想要的类似的例子是,有一种方法可以保留一个计算访问者数量的变量(不使用任何类型的文件或数据库操作)。每次用户访问我的页面时,该变量都会递增。

干杯!

5 个答案:

答案 0 :(得分:5)

在不使用文件或数据库的情况下,我相信你可以使用像APC这样的东西来做到这一点。

$var = 1;
$key = 'myVariable';
apc_store($key, $var);
echo apc_fetch($key); // 1

如果您想增加它,可以使用apc_inc()

echo apc_inc($key); // 2

但是,如果清除缓存(在填满或重新启动服务器时会发生这种情况),则不会保留此变量。

答案 1 :(得分:3)

查看信号量和共享内存以及它们在PHP中的工作方式。使用共享内存变量,不同的进程(用户)可以使用相同的内存空间并使用相同的变量。这里是PHP文档的链接,可以帮助您入门:

http://www.php.net/manual/en/function.shm-get-var.php

答案 2 :(得分:1)

没有。在某些(大多数?)设置中,每个请求都在单独的进程中处理,这些进程甚至不共享地址空间。您需要一个数据库或其他持久存储机制。

答案 3 :(得分:0)

我认为你所寻找的是一个被称为全局变量。

在引用页面视图计数器时,我们通常使用文件中的变量。 Here's a good example

你也可以通过数据库来做,但是如果你还没有数据库,那么只需获得一个用于点击计数器就可能有点过分了。

答案 4 :(得分:0)

我猜你可以使用Apache服务器变量。据推测,非Apache服务器会有类似的东西。

可以使用apache_setenv / apache_getenv设置/获取变量。问题是这些是否会传播到所有apache子节点,或者只是在PHP脚本上运行。

当然,由于它们是动态设置的,所以每当Apache重置时你就会丢失这些值。