可以采用數(shù)據(jù)庫緩存、事務(wù)緩存等技巧。還可以從架構(gòu)上把事務(wù)做合理的分配,花錢擴(kuò)充你的硬件設(shè)施等。比如,阿里巴巴從最初的1臺電腦逐步擴(kuò)充到過萬臺電腦了。
創(chuàng)新互聯(lián)自2013年起,先為竹溪等服務(wù)建站,竹溪等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為竹溪企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
建立數(shù)據(jù)庫連接池服務(wù),有很多實(shí)現(xiàn)的方式,PHP的話,我推薦使用swoole(PHP的一個(gè)網(wǎng)絡(luò)通訊拓展)來實(shí)現(xiàn)。
網(wǎng)站頁面靜態(tài)化。靜態(tài)化的頁面為.html(.htm等)不需要web服務(wù)器重新加載項(xiàng)解析,只需要生成一次,以后每次都直接下載到客戶端,效率高很多。將網(wǎng)站的web服務(wù)器、數(shù)據(jù)庫服務(wù)器、圖片和文件服務(wù)器分開。
大數(shù)據(jù)并發(fā)處理解決方案:HTML靜態(tài)化 效率最高、消耗最小的就是純靜態(tài)化的html頁面,所以盡可能使網(wǎng)站上的頁面采用靜態(tài)頁面來實(shí)現(xiàn),這個(gè)最簡單的方法其實(shí)也是最有效的方法。
以下是一些總結(jié)的方法: 第一,確認(rèn)服務(wù)器硬件是否足夠支持當(dāng)前的流量。
架構(gòu)還可以選擇性地使用隊(duì)列,我現(xiàn)在用的beantalkd,Redis也是一個(gè)很好的選擇。
使用緩存,比如memcache,redis,因?yàn)樗鼈兪窃趦?nèi)存中運(yùn)行,所以處理數(shù)據(jù),返回?cái)?shù)據(jù)非???,所以可以應(yīng)對高并發(fā)。
1盡量使用數(shù)字型字段,若只含數(shù)值信息的字段盡量不要設(shè)計(jì)為字符型,這會(huì)降低查詢和連接的性能,并會(huì)增加存儲開銷。這是因?yàn)橐嬖谔幚聿樵兒瓦B接時(shí)會(huì) 逐個(gè)比較字符串中每一個(gè)字符,而對于數(shù)字型而言只需要比較一次就夠了。
這樣的結(jié)果就是PHP程序消耗較少的內(nèi)存,但卻增加了數(shù)據(jù)庫服務(wù)器的壓力,因?yàn)閿?shù)據(jù)庫會(huì)一直等待PHP來取數(shù)據(jù),一直到數(shù)據(jù)全部取完。很顯然,緩沖查詢模式適用于小數(shù)據(jù)量查詢,而非緩沖查詢適應(yīng)于大數(shù)據(jù)量查詢。
可以采用MQ,首先將task丟進(jìn)Q里面,然后給出用戶提示,前臺頁面輪詢后臺結(jié)果。如果數(shù)據(jù)量過大建議分批處理,拆分成多個(gè)task即可。
來個(gè)100人同時(shí)點(diǎn),你要用的是普通的虛擬機(jī)就不行了。最好是換種方式實(shí)現(xiàn),不要通過網(wǎng)頁進(jìn)行采集??梢苑浅:唵蔚脑跀?shù)據(jù)庫的表,創(chuàng)建一個(gè)采集隊(duì)列,后臺執(zhí)行一個(gè)crontab的計(jì)劃任務(wù),去完成隊(duì)列里的采集任務(wù)。
1、這個(gè)意味著PHP腳本使用了過多的內(nèi)存,并超出了系統(tǒng)對其設(shè)置的允許最大內(nèi)存。解決這個(gè)問題,首先需要查看你的程序是否分配了過多的內(nèi)存,在程序沒有問題的情況下,你可以通過一下方法來增加PHP的內(nèi)存限制(memory_limit)。
2、我給你個(gè)思路,利用游覽器的刷新機(jī)制,每執(zhí)行10秒刷新一下自動(dòng)更新下一串?dāng)?shù)據(jù),一串多少數(shù)據(jù),看你的SQL效率而定。就這樣一直刷新更新,到結(jié)束為止。
3、你用網(wǎng)頁的方式,讓人點(diǎn)擊,服務(wù)器采集,簡直是弱爆了。每個(gè)人的點(diǎn)擊循環(huán)1000次,來個(gè)100人同時(shí)點(diǎn),你要用的是普通的虛擬機(jī)就不行了。最好是換種方式實(shí)現(xiàn),不要通過網(wǎng)頁進(jìn)行采集。
4、而且如果使用mysql的話,它也有一個(gè)超時(shí)時(shí)間,運(yùn)行一串代碼時(shí)間如果超過配置文件的時(shí)間,會(huì)被中斷不運(yùn)行。第一種你可以修改php配置文件timeout的運(yùn)行時(shí)間,第二你可以分批處理大量數(shù)據(jù),注意是分批處理,就OK了。
5、使用緩存,比如memcache,redis,因?yàn)樗鼈兪窃趦?nèi)存中運(yùn)行,所以處理數(shù)據(jù),返回?cái)?shù)據(jù)非??欤钥梢詰?yīng)對高并發(fā)。