用 PHP 編寫支援高併發的網站,需要做什麼處理?
1. 資料的讀寫層
高併發更多考驗的是資料的讀寫,最終考驗的是根據具體的業務需求進行系統的架構;哪些資料要滿足實時讀寫,哪些資料可以非同步讀寫等要考慮好;資料的讀寫模型分析清楚後就要設計資料的儲存方案,mysql擅長的是關係資料和資料統計,但是併發訪問是瓶頸;memcache擅長的是資料快取,但kv的資料結構有限;redis作為記憶體資料庫但記憶體空間畢竟沒有硬碟空間大;
各有優缺點,那麼就要根據自己的業務來綜合或者選取用這些工具
2. 靜態/動態訪問
有條件的就使用cdn,沒條件的至少弄一個靜態訪問層,至於使用apache還是nginx或者其它的,自己在虛擬機器上都安裝一遍,做一個壓力測試對比一下
非靜態訪問轉發到動態訪問層
3. 邏輯處理即php
到php了,php承接動態訪問的輸入,進行邏輯運算,最後到資料層去進行讀寫;
別做太傻的事就可以了,比如無謂的foreach迴圈,複製等操作;再比如,對於實時訪問,對10個數據進行排序,就不要再用mysql 的select order by 了,直接用php的函式來排序就好了。