本文目錄一覽:
- 1、PHP如何解決網站的大數據大流量與高並發
- 2、php採集大數據的方案
- 3、1、php開發的網站穩定嗎? 2、php開發的網站性能如何? 3、php開發的網站安全性如何?
- 4、PHP-大數據量怎麼處理優化
PHP如何解決網站的大數據大流量與高並發
使用緩存,比如memcache,redis,因為它們是在內存中運行,所以處理數據,返回數據非常快,所以可以應對高並發。
2.增加帶寬和機器性能,1M的帶寬同時處理的流量肯定有限,所以在資源允許的情況下,大帶寬,多核cpu,高內存是一個解決方案。
3.分佈式,讓多個訪問分到不同的機器上去處理,每個機器處理的請求就相對減少了。
簡單說些常用技術,負載均衡,限流,加速器等
php採集大數據的方案
1、建議你讀寫數據和下載圖片分開,各用不同的進程完成。
比如說,取數據用get-data.php,下載圖片用get-image.php。
2、多進程的話,php可以簡單的用pcntl_fork()。這樣可以並發多個子進程。
但是我不建議你用fork,我建議你安裝一個gearman worker。這樣你要並發幾個,就啟幾個worker,寫代碼簡單,根本不用在代碼里考慮thread啊,process等等。
3、綜上,解決方案這樣:
(1)安裝gearman worker。
(2)寫一個get-data.php,在crontab里設置它每5分鐘執行一次,只負責讀數據,然後把讀回來的數據一條一條的扔到 gearman worker的隊列里;
然後再寫一個處理數據的腳本作為worker,例如叫process-data.php,這個腳本常駐內存。它作為worker從geraman 隊列里讀出一條一條的數據,然後跟你的數據庫老數據比較,進行你的業務邏輯。如果你要10個並發,那就啟動10個process-data.php好了。處理完後,如果圖片地址有變動需要下載圖片,就把圖片地址扔到 gearman worker的另一個隊列里。
(3)再寫一個download-data.php,作為下載圖片的worker,同樣,你啟動10個20個並發隨便你。這個進程也常駐內存運行,從gearman worker的圖片數據隊列里取數據出來,下載圖片
4、常駐進程的話,就是在代碼里寫個while(true)死循環,讓它一直運行好了。如果怕內存泄露啥的,你可以每循環10萬次退出一下。然後在crontab里設置,每分鐘檢查一下進程有沒有啟動,比如說這樣啟動3個process-data worker進程:
* * * * * flock -xn /tmp/process-data.1.lock -c ‘/usr/bin/php /process-data.php /dev/null 21’
* * * * * flock -xn /tmp/process-data.2.lock -c ‘/usr/bin/php /process-data.php /dev/null 21’
* * * * * flock -xn /tmp/process-data.3.lock -c ‘/usr/bin/php /process-data.php /dev/null 21’
不知道你明白了沒有
1、php開發的網站穩定嗎? 2、php開發的網站性能如何? 3、php開發的網站安全性如何?
導致網站癱瘓的大流量訪問關鍵在於分佈式和集群環境里的複雜業務處理流程,在這個層面上,網站性能主要看架構水平,而php的語言本身不適合做大架構的項目,體現在可擴展性可維護性方面,所以真正的大數據量訪問站點多數傾向於JAVA開發的系統。
樓上有人舉錯了例子,淘寶不是php+mysql,php只是淘寶的頁面技術,龐大的業務層代碼全是java,php是撐不起淘寶的需要的,而數據庫是oracle和mysql混用的。
當然如果你的功能不複雜,只是訪問量多,php也足夠勝任。
PHP-大數據量怎麼處理優化
大數據的話可以進行以下操作:
減少對數據庫的讀取,也就是減少調用數據庫,
進行數據緩存,
利用數據庫的自身優化技術,如索引等
精確查詢條件,有利於提高查找速度
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/259579.html