2011-10-19 56 views
2

前段時間我做了一個php搜索引擎,現在我有這個疑問,我已經搜索了它,看到很多問題在這裏堆棧溢出談論多個同時訪問PHP腳本,但只有關於追加,修改等...php的疑惑。如果兩個人同時訪問同一個腳本,會發生什麼情況?

假設我的搜索引擎(或任何其他基於用戶輸入的腳本生成不同的響應)需要20秒鐘才能結束搜索。

用戶A訪問腳本

用戶B 10秒後訪問腳本而非用戶A(因此腳本沒有「回答」用戶A還)

會發生什麼?服務器是否會「執行文件的另一個實例」,這樣兩個用戶都會有他們的迴應,或者會有些東西被搞砸了?

如果一個PHP腳本需要很長時間才能完成執行,並且一個人訪問它,然後離開而不等待響應,那麼php腳本仍然會做所有事情,直到它結束? (邏輯告訴我,在最後一個問題中,腳本會做所有事情直到它結束,因爲這個人只是發出請求,然後等待答案來臨,如果它關閉仍然沒有什麼會阻止php腳本執行,但我仍然問,因爲我想完全確定)

回答

3

兩人都有自己的腳本實例。數據修改後,數據一致性仍然存在問題。由於HTTP是一種無狀態協議,你不知道一個人是否等待結果而離開,腳本將運行到最後。

+0

我認爲,如果數據被修改了,壞的東西會發生,但我擔心即使沒有數據被修改也會發生壞的事情,但幸運的是它沒有,謝謝你的回答 – wxiiir

0

每個用戶的會話都使用線程進行處理。每件事都在排隊,沒有什麼東西混亂。

但在某些情況下可能會出現問題。例如:用戶請求數據庫中的某個字段,但另一個用戶在第一個用戶的線程正在等待或掛起時刪除該字段。但它是真正的後方,如果發生異常將是王位,這是我們的腳本處理它的責任。

相關問題