2010-08-10 44 views
0

我有一個PHP維護腳本,用於更新和修復數據庫。理論上,同時運行兩個腳本應該不成問題,但我希望通過在PHP中將變量鎖定在一個變量中來保證安全。當然,問題是我不能將它存儲在$_SESSION變量中,因爲會話僅適用於一個用戶。如何在PHP中創建非文件鎖定?

有沒有什麼辦法可以將這個鎖存儲在變量中?如果服務器在腳本中間死亡,我寧願不創建和刪除文件。

回答

2

由於您正在使用數據庫,因此您可以在腳本運行時使用lock the tables。這將確保獨有的數據庫訪問。

0

有沒有什麼辦法可以將這個鎖存儲在一個變量中?

一個變量是當前的php實例 - 所以它是一個更糟糕的解決方案,而不是將它保留在會話中。

如果服務器死在腳本中間,我寧願不創建和刪除文件。

它仍然可能是最好的地方。如果修復腳本沒有完成,那麼您可能想介入並手動確保數據一致 - 在操作啓動併成功完成時,您還應該阻止對資源的所有其他訪問。

如果在命令提示符下運行它,那麼你可以搜索進程列表:

$cmd=$argv[0]; 
$pid=getmypid(); 
$find="ps -ef | grep $cmd | grep -v grep | grep -v $pid"; 
$others=`$find`; 

但這仍然帶有先前嘗試失敗,並且數據被損壞的風險。

C.