php Singleton类实例会在多个会话中保留吗


Will a php Singleton class instance be retained across multiple sessions?

为了一个简单的例子,如果我想在不使用磁盘存储的情况下计算脚本的点击次数,我可以用静态类成员来完成吗?

用户1:

<?php
$test = Example::singleton();
$test->visits++;
?>

用户2:

<?php
$test = Example::singleton();
$test->visits++;
?>

$visits的值是1还是2?

否。每个请求都会产生一个新的进程。他们之间什么都没有。

您可以使用会话来保留状态,会话本质上是一种基于磁盘的序列化机制。会话本身依赖cookie来识别请求之间的数据(但其自身的数据存储在服务器上的文件中)。因此,它们对于用户来说是本地的,不适合您的需求。在PHP应用程序中存储此类数据的标准方式是在数据库中。

$visits在这两种情况下都将为1。

单点是针对每个请求,而不是针对每台机器/主机。每个请求都有自己的实例。

我认为如果没有某种磁盘存储/数据库,你无法计算一页的点击次数。