2010-06-14 84 views
3

當GD庫正在訪問它時,是否可以鎖定文件以阻止它被打開?停止多個會話同時訪問同一個文件

我期望實現的目標類似於數據庫的'serialzable'級別的隔離......我想確保一次只有一個會話/用戶可以訪問圖像以停止「髒讀」。

我的應用程序允許用戶將選擇圖像添加到更大的圖像。

例如

  • 大的圖像是空
  • 拉吉&珍妮特上傳他們的圖片
  • Raj的會話打開大圖。
  • 1ms後珍妮特的會議 打開大圖像。
  • Raj的過程中添加的他的形象和 保存原圖
  • 1毫秒後珍妮特的會議 增加了他的形象,並保存其大圖像的 版本。
  • 因此,Raj的圖像不在 最後的圖像,珍妮特的版本 覆蓋它。

我希望能夠說清楚。

+0

謝謝您的投票! – Pablo 2010-06-14 11:14:53

回答

2

結賬flock。您可以鎖定正在使用的文件,也可以在文件系統中的其他位置創建一個「鎖定文件」,以供您的所有腳本檢查。

+0

它看起來很完美,我唯一的擔心是如果某種方式永久鎖定文件。有沒有辦法防止這種情況發生? – Pablo 2010-06-14 11:09:57

+0

當文件關閉時,鎖被釋放,所以唯一的麻煩是如果你的進程掛起而沒有關閉(即變成殭屍進程)。 – 2010-06-14 17:39:56