PHP是否具有像Java一樣的機制?在我的項目中,不同的用戶可以繼續進行同一事務在php或zend框架中同步
作爲示例,我向具有付款詳情頁面URL的郵件發送給不同用戶。因此他們可以同時查看該頁面。他們也可以繼續進行同樣的交易。我想在用戶已經查看頁面時爲用戶拒絕(顯示消息)該頁面。在Java中,我們可以使用同步對象。我如何在PHP或zend框架中做到這一點?
PHP是否具有像Java一樣的機制?在我的項目中,不同的用戶可以繼續進行同一事務在php或zend框架中同步
作爲示例,我向具有付款詳情頁面URL的郵件發送給不同用戶。因此他們可以同時查看該頁面。他們也可以繼續進行同樣的交易。我想在用戶已經查看頁面時爲用戶拒絕(顯示消息)該頁面。在Java中,我們可以使用同步對象。我如何在PHP或zend框架中做到這一點?
PHP不像Java。
每個請求都在一個單獨的堆棧中運行,並帶有單獨的變量。您只能使用擴展名,如memcache等在PHP中共享對象。
我的建議是使用文件系統的鎖定機制。例如:
<?php
$fp = fopen($filename,"w"); // open it for WRITING ("w")
if (flock($fp, LOCK_EX)) {
// do your stuf here
flock($fp, LOCK_UN); // unlock the file
} else {
// flock() returned false, no lock obtained
print "Could not lock $filename!\n";
}
?>
我努力理解你想在這裏實現的東西 - 無論是在PHP和Java。看起來你想對數據集應用互斥鎖 - 但這不是同步的副作用 - 不是它的目的。如果您使用會話ID和FSM來控制訪問,則不需要這麼做。
我可以鎖定它。但是用戶可能會關閉該選項卡。所以我們無法解鎖這個過程。它會永遠鎖定。它如何處理? – 2012-02-08 11:04:16
Aaaarghhh!唯一比通過會話傳遞參數更糟的是使用文件作爲數據庫 – symcbean 2012-02-08 12:38:22
@symcbean它僅用於鎖定,不存儲數據。 – igorw 2012-02-08 14:22:09