【发布时间】:2011-11-05 05:42:05
【问题描述】:
您好,我正在编写的 WordPress 插件有一个奇怪的问题,但这与 WordPress 本身无关,更多的是与 PHP 有关,所以请继续阅读,以便我解释。连接了 WordPress 插件,以便调用 init() 函数...这可行,我可以确认它被调用一次。
class MyClass
{
static $i=0;
public static function init()
{
self::$i++;
}
public static function dosomething()
{
echo 'i is = ' . self::$i;
}
}
当第一次从 Wordpress 中调用 dosomething() 时,没问题。然后我有另一个 ajax-response.php 文件,其中包含上述类并再次调用 dosomething,它打印 i 值 = 1。
问题是通过ajax-response.php脚本调用时的i值又回到0了?
就好像它在完全不同的内存空间中执行并创建一个新程序,这样静态成员变量只在同一个进程之间共享,而不是在多个 Web 线程之间共享。
有什么想法吗?
提前致谢,
克里斯
【问题讨论】:
-
没错。静态成员的状态在不同的网络服务器请求之间不是持久的。如果您想要这种行为,您需要以另一种方式执行此操作。数据库、缓存、会话、cookie 等等等等。
-
感谢您的回复和大家的帮助