我已經讀過PHP「可能」的弱點是它如何處理「併發」。只有會話和cookies來保存用戶狀態的跟蹤,怎樣才能PHP高精度處理以下情況:PHP爲「高流量」網站
多個用戶簽出與只有1庫存股票一個項目(語法錯誤對不起,但你很可能找到一些圖片)
多個用戶使用相同的登錄信息
多個用戶編輯在同一時間同一圖像(雖然這種情況很少在現實情況登錄到同一用戶帳戶生活)
,或者需要多線程處理
(我很抱歉,如果我在這裏濫用條款)
我已經讀過PHP「可能」的弱點是它如何處理「併發」。只有會話和cookies來保存用戶狀態的跟蹤,怎樣才能PHP高精度處理以下情況:PHP爲「高流量」網站
多個用戶簽出與只有1庫存股票一個項目(語法錯誤對不起,但你很可能找到一些圖片)
多個用戶使用相同的登錄信息
多個用戶編輯在同一時間同一圖像(雖然這種情況很少在現實情況登錄到同一用戶帳戶生活)
,或者需要多線程處理
(我很抱歉,如果我在這裏濫用條款)
的責任移除這些都不是真正的併發問題。雖然PHP作爲一種環境確實缺乏線程能力,但任何使用PHP模塊的Web服務器都會有多個線程,每個線程都有自己的活動PHP環境,它們都使用相同的資源。您將遇到Java,.Net,Perl或任何其他Web應用程序語言的這些問題。
據我所知,沒有語言使用線程來完成任何這些任務。由於HTTP通訊的無狀態特性,餅乾會話的每網絡語言的中流砥柱,所以無論你使用什麼平臺,你會看到很多在所有這些相同的策略來處理一個給定的問題。
這些不一定是PHP的問題,任何其他交易。鑑於任何選擇的技術,這些都是開發人員需要克服的問題。
不要忘記你的數據庫可以做交易和鎖定,對於那些需要110%確定沒有任何事情發生的情況。 – 2010-01-13 03:04:30
就像所有語言一樣,您需要找到某種方式來鎖定這些文件。如果你並不熟悉併發性,你可能會從here開始,並對可用的不同方法進行一些研究。
但我真正的問題是這是否真的會成爲一個問題。如果你將要進入一個高併發系統,碰撞情況下的損害有多高。如果碰撞的成本非常高,那麼可能會將工作外包給已經切斷牙齒的人,只是看他們使用的方法。
你有沒有聽說過數據庫事務?正確使用,這些可以解決您的所有問題(順便說一句,這不是PHP的問題)。
如何這只是PHP的限制 - 這是在計算機科學領域的共同問題。 – 2010-01-13 02:59:20
不java有類處理線程,鎖,信號等? PHP有這些嗎? (如果它們存在,還沒有真正發現它們) – yretuta 2010-01-13 03:01:25
否 - 但它可以訪問memcached(可以模擬互斥/信號量)和數據庫。 競爭條件和鎖定可以在許多層解決,包括PHP,數據庫和緩存。 – 2010-01-13 03:05:23