新聞中心
如何解決PHP里大量數(shù)據(jù)循環(huán)時內(nèi)存耗盡的問題
最弱雞方法: 將內(nèi)存調(diào)大
公司主營業(yè)務(wù):成都做網(wǎng)站、網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出益陽免費(fèi)做網(wǎng)站回饋大家。
攜程方法循環(huán) yield
緩沖查詢方式,php內(nèi)部提供的接口可以這樣實現(xiàn)
php 長駐內(nèi)存之后 new 對象會累積嗎
是會積累的。
內(nèi)存從邏輯上說大體上是分為4段,棧空間段、堆空間段、代碼段、初始化靜態(tài)段,程序里面不同的聲明放在不同的內(nèi)存段里面,數(shù)據(jù)段(datasegment)通常是指用來存放程序中已初始化且不為0的全局變量如:靜態(tài)變量和常量;代碼段(codesegment/textsegment)通常是指用來存放程序執(zhí)行代碼的一塊內(nèi)存區(qū)域,比如函數(shù)和方法。
棧空間段是存儲占用相同空間長度并且占用空間小的數(shù)據(jù)類型的地方,比如說整型1,10,100,1000,10000,100000等等,在內(nèi)存里面占用空間是等長的,都是64位4個字節(jié)。那么數(shù)據(jù)長度不定長。
PHP處理內(nèi)存問題,怎么解決
最簡單或常用的方法是修改php.ini
首先找到對你的網(wǎng)站生效的php.ini文件
由于有多個地方都可以設(shè)置php的參數(shù),找到正確的配置文件,并進(jìn)行更改是首先要做的一步。如果你上面的方法建立了php文件來查看其配置參數(shù),則你可以找到"Loaded Configuration File"這一項,以下是個例子:
對于Linux用戶,你可以通過執(zhí)行"php -i | grep Loaded Configuration File"來找到對應(yīng)的配置文件。而Windows用戶,你可以嘗試修改你的php安裝目錄下的php.ini。
編輯php.ini
在php.ini中,找到"memory_limit"這一項,如果沒有,你可以在文件的尾部自己增加這個參數(shù)。以下是一些設(shè)置范例
memory_limit = 128M ; 可以將128M改為任何你想設(shè)置的值
保存文件
重啟web 服務(wù)器
如果是web服務(wù)器使用Apache, 則執(zhí)行:
httpd restart
有些情況下,你可能不被允許私修改php.ini。比如如果你購買了虛擬主機(jī)服務(wù),但是你的服務(wù)商確禁止你修改這個文件。那么,你可以需要考慮用其他方法來增加memory_limit的值。
如何解決PHP查詢大量數(shù)據(jù)內(nèi)存耗盡的問題
這個問題在PHP的官方網(wǎng)站上叫緩沖查詢和非緩沖查詢(Buffered and Unbuffered queries)。PHP的查詢?nèi)笔∧J绞蔷彌_模式。也就是說,查詢數(shù)據(jù)結(jié)果會一次全部提取到內(nèi)存里供PHP程序處理。這樣給了PHP程序額外的功能,比如說,計算行數(shù),將指針指向某一行等。更重要的是程序可以對數(shù)據(jù)集反復(fù)進(jìn)行二次查詢和過濾等操作。但這種緩沖查詢模式的缺陷就是消耗內(nèi)存,也就是用空間換速度。
相對的,另外一種PHP查詢模式是非緩沖查詢,數(shù)據(jù)庫服務(wù)器會一條一條的返回數(shù)據(jù),而不是一次全部返回,這樣的結(jié)果就是PHP程序消耗較少的內(nèi)存,但卻增加了數(shù)據(jù)庫服務(wù)器的壓力,因為數(shù)據(jù)庫會一直等待PHP來取數(shù)據(jù),一直到數(shù)據(jù)全部取完。
很顯然,緩沖查詢模式適用于小數(shù)據(jù)量查詢,而非緩沖查詢適應(yīng)于大數(shù)據(jù)量查詢。
網(wǎng)站欄目:php相同數(shù)據(jù)的內(nèi)存 php統(tǒng)計數(shù)據(jù)庫數(shù)據(jù)
標(biāo)題鏈接:http://www.ef60e0e.cn/article/doghesd.html