2
php會話的併發腳本似乎有限制。我說會話而不是IP /客戶端,因爲我可以啓動另一個瀏覽器並加載第二個腳本。是否有限制一個併發腳本的參數?阻止瀏覽器從同一個域同時加載2個長時間運行的PHP腳本的功能?
你必須等待一個完成之後,另一個開始加載。
php會話的併發腳本似乎有限制。我說會話而不是IP /客戶端,因爲我可以啓動另一個瀏覽器並加載第二個腳本。是否有限制一個併發腳本的參數?阻止瀏覽器從同一個域同時加載2個長時間運行的PHP腳本的功能?
你必須等待一個完成之後,另一個開始加載。
默認的會話處理程序使用文件,並且會在請求期間鎖定會話文件。如果您有一個長時間運行的腳本,那麼在進入腳本的「長時間運行」部分之前,您應該強制它通過執行session_write_close()
來放棄會話鎖定。
如果您需要在長時間運行的部分完成後修改會話數據,您可以隨後再次使用session_start()
重新打開會話。
有趣的是,有沒有辦法避免在不改變代碼的情況下鎖定會話。也許在php.ini中的東西? – HyderA 2011-02-23 15:24:04
雖然我意識到可能會導致一些痛苦的競爭條件。 – HyderA 2011-02-23 15:28:08
不是,它是由設計 - 如果會話沒有鎖定,那麼多個並行請求將踩在文件上。更改代碼很小 - 如果長時間運行的腳本在長時間運行的過程中/之後不更改會話數據,則關閉會話將不起作用。 $ _SESSION變量仍然存在並且可用,只要腳本退出時對其進行的任何更改都不會寫出。 – 2011-02-23 15:34:55