2012-07-03 55 views
0

我有一個特定的變量,我從服務器獲取它並將其返回給服務器。但是,直到我的處理完成該變量,沒有人應該訪問它,即我想鎖定該變量在服務器。我正在編程Php。 請有人給出一個想法如何做到這一點..如何鎖定服務器上的變量一段時間

+0

顯示的你在做什麼PLZ一些代碼。 – xdazz

+0

我還處於劃痕級別。我以XML文件的形式獲取數據(公交車座位信息),我將它存儲在數據庫中,我在我的頁面上顯示座位佈局,當用戶點擊座位和付款時,我必須在服務器上阻止該座位並在我之後釋放它收到付款。我該怎麼做?? – mano

+0

你正在使用哪個數據庫? –

回答

0

PHP是一個無共享的環境,所以沒有人會訪問該變量(即使它是一個靜態或全局)除當前用戶。

+0

我還處於臨時級別。我以XML文件的形式獲取數據(公交車座位信息),我將它存儲在數據庫中,我在我的頁面上顯示座位佈局,當用戶點擊座位和付款時,我必須在服務器上阻止該座位並在我之後釋放它收到付款。我該怎麼做?? – mano

+0

您應該在數據庫交互層應用悲觀併發。 –

1

您的最佳選擇是在您的數據表中添加一個額外的列,以便在用戶想要預留座位時插入時間戳。考慮到用戶也可能會走開,永遠不會完成預訂,因此您不能無限期地將其鎖定。因此,將當前時間輸入該行以將其標記爲保留。當檢查一個座位是否空閒時,考慮所有比X早的標誌(決定X應該是什麼)已過期,因爲用戶顯然從未遵循過。

+0

我每次都從不同的API獲取座位數據。因此,例如,我想阻止它5分鐘,我無法得到的是 - 我怎麼能阻止在他們的所有服務器的座位數據(這是XML格式)?? – mano

+0

因此,實際的預訂是通過「他們的」服務器上的API進行的,其他人也正在使用這些API?那麼除非他們的API提供某種鎖定機制,否則我不會看到這是可能的。 – deceze

+0

是的,這就是困擾我的事情。&現在我們將自己創建一個API並將其提供給其他公交運營商 - 在這種情況下,我可以在該特定座位行上放置行鎖。那會夠嗎? – mano

0

我認爲要實現這一點,你必須從你坐席的地方開始做點什麼。
喜歡,設置一些東西在表中 - 一個布爾值,時間戳,刪除行,標誌等 - 表明你已經處理或處理該行。

您可以使用mysql數據庫的行鎖概念。

http://dev.mysql.com/doc/refman/5.0/en/internal-locking.html

+0

謝謝......我正在讀它 – mano

相關問題