2011-05-30 58 views
2

爲了一個簡單的例子,如果我想計算一個腳本在沒有使用磁盤存儲的情況下獲得的命中數,我可以使用靜態類成員來完成此操作嗎?跨單元會話會保留一個php單例類實例嗎?

用戶1:

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

用戶2:

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

可否的$visits值是1或2?

+0

使用memcached或APC – Gordon 2011-05-30 15:34:03

回答

8

不需要每個請求都會產生一個新的進程。沒有什麼能在他們之間生存

您可以使用會話來保留狀態,這本質上是基於磁盤的序列化機制。會話他們自己依靠cookie來識別請求之間的數據(但它自己的數據存儲在服務器上的文件中)。因此,它們對用戶而言是本地的,並不適合您的需求。將這種類型的數據存儲在PHP應用程序中的標準方式是在數據庫中。

1

$visits在兩種情況下都是1。

單身人士是每個請求,而不是每臺機器/主機。每個請求都有自己的實例。

我不認爲你可以計算一個網頁沒有某種磁盤存儲/數據庫的點擊次數。

+0

您應該用「請求」替換「腳本」。 – 2011-05-30 14:19:58

+0

@Philippe權利,OP在問題中使用腳本,我有點困惑;) – krtek 2011-05-30 14:21:27