爲了一個簡單的例子,如果我想計算一個腳本在沒有使用磁盤存儲的情況下獲得的命中數,我可以使用靜態類成員來完成此操作嗎?跨單元會話會保留一個php單例類實例嗎?
用戶1:
<?php
$test = Example::singleton();
$test->visits++;
?>
用戶2:
<?php
$test = Example::singleton();
$test->visits++;
?>
可否的$visits
值是1或2?
爲了一個簡單的例子,如果我想計算一個腳本在沒有使用磁盤存儲的情況下獲得的命中數,我可以使用靜態類成員來完成此操作嗎?跨單元會話會保留一個php單例類實例嗎?
用戶1:
<?php
$test = Example::singleton();
$test->visits++;
?>
用戶2:
<?php
$test = Example::singleton();
$test->visits++;
?>
可否的$visits
值是1或2?
不需要每個請求都會產生一個新的進程。沒有什麼能在他們之間生存
您可以使用會話來保留狀態,這本質上是基於磁盤的序列化機制。會話他們自己依靠cookie來識別請求之間的數據(但它自己的數據存儲在服務器上的文件中)。因此,它們對用戶而言是本地的,並不適合您的需求。將這種類型的數據存儲在PHP應用程序中的標準方式是在數據庫中。
$visits
在兩種情況下都是1。
單身人士是每個請求,而不是每臺機器/主機。每個請求都有自己的實例。
我不認爲你可以計算一個網頁沒有某種磁盤存儲/數據庫的點擊次數。
您應該用「請求」替換「腳本」。 – 2011-05-30 14:19:58
@Philippe權利,OP在問題中使用腳本,我有點困惑;) – krtek 2011-05-30 14:21:27
使用memcached或APC – Gordon 2011-05-30 15:34:03