2010-03-18 199 views

回答

3

通常你應該優化你的查詢/執行(),例如不要使用SELECT * FROM或者任何ORM都會造成內存問題。

解決方法設置內存大小更高:

的ini_set( 「memory_limit的」, 「5M」);

5M將限制設置爲5兆字節。 如果這不起作用,請嘗試在php.ini中設置值。

乾杯。

3

你在查詢中使用「SELECT *」嗎?如果是,並且您正在獲取行的TON,則PHP沒有足夠的內存來分配給所有字段。

您可以通過增加PHP的內存限制:

ini_set('memory_limit', '32M'); 
1

沒有更多的細節,很難以確保您的具體問題是什麼;但是,當試圖讀取具有多條記錄的查詢結果時,這是很常見的。

PHP有一個memory_size_limit(在php.ini中設置),它設置PHP可用於處理腳本的內存量的最大值。如果您嘗試閱讀大量記錄並說,將其存儲在數組中,則PHP可能會耗盡內存。你可以做的一件事是增加內存大小限制,比如從2兆字節(2M)增加到32M。

正如其他人所提到的,如果您有權訪問您的主機,您也可以使用ini_set('memory_limit', '32M')或類似軟件。

但是,無論您是否允許編輯您的php.ini文件,您都應該尋找更有效的方式來檢索和存儲您的數據。考慮簡化查詢,限制查詢結果,或者僅使用類似while ($row = $db->fetch_row)的內容來一次處理一個結果行。

0

如果您使用的PHP 5.3與mysqlnd,請注意「MySQL的」內存使用現在計爲PHP的內存使用情況。之前,libmysql使用的內存不會計入memory_get_usage()

我們將很多重度查詢改爲使用unbuffered queries,這可以減少內存使用量。

相關問題