2012-02-08 68 views
0

PHP是否具有像Java一樣的機制?在我的項目中,不同的用戶可以繼續進行同一事務在php或zend框架中同步

作爲示例,我向具有付款詳情頁面URL的郵件發送給不同用戶。因此他們可以同時查看該頁面。他們也可以繼續進行同樣的交易。我想在用戶已經查看頁面時爲用戶拒絕(顯示消息)該頁面。在Java中,我們可以使用同步對象。我如何在PHP或zend框架中做到這一點?

回答

3

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"; 
} 
?> 
+0

我可以鎖定它。但是用戶可能會關閉該選項卡。所以我們無法解鎖這個過程。它會永遠鎖定。它如何處理? – 2012-02-08 11:04:16

+0

Aaaarghhh!唯一比通過會話傳遞參數更糟的是使用文件作爲數據庫 – symcbean 2012-02-08 12:38:22

+0

@symcbean它僅用於鎖定,不存儲數據。 – igorw 2012-02-08 14:22:09

0

我努力理解你想在這裏實現的東西 - 無論是在PHP和Java。看起來你想對數據集應用互斥鎖 - 但這不是同步的副作用 - 不是它的目的。如果您使用會話ID和FSM來控制訪問,則不需要這麼做。