我有我自己的PHP數據對象類,它包裝mysqli庫。它可以很好地處理大多數數據類型,包括文本。只要我將表格列從文本更改爲中文,就會得到此問題標題中描述的錯誤。我已經在幾個共享主機環境中測試了我的php腳本,並且我只在其中一個環境中出現了這個錯誤。Mysql MediumText導致PHP致命錯誤:允許內存大小爲8388608字節用盡
MediumText和LongText是否真的用盡了那麼多內存?
我將開始我的優化PHP類,但我要確保我在正確的軌道上..
我有我自己的PHP數據對象類,它包裝mysqli庫。它可以很好地處理大多數數據類型,包括文本。只要我將表格列從文本更改爲中文,就會得到此問題標題中描述的錯誤。我已經在幾個共享主機環境中測試了我的php腳本,並且我只在其中一個環境中出現了這個錯誤。Mysql MediumText導致PHP致命錯誤:允許內存大小爲8388608字節用盡
MediumText和LongText是否真的用盡了那麼多內存?
我將開始我的優化PHP類,但我要確保我在正確的軌道上..
MEDIUMTEXT可容納多達16777215在http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
這似乎是規定>比你定義的內存限制php。所以這是有道理的。
mediumtext和longtext字段可能會保存那麼多信息。你只是改變列的類型,還是改變列的類型,然後把文本填滿?如果它是前者,我的猜測是會有一些逃跑循環/遞歸,它們構建了一堆對象/數組/事件,並且正在實現PHP的默認內存限制。
您可以通過php.ini控制分配給PHP的內存量,也可以使用ini_set函數在運行時設置這些值。
ini_set("memory_limit","12M");
該託管服務提供商可能已將PHP設置爲僅允許腳本8 MB的內存。
memory_limit = 8M ; Maximum amount of memory a script may consume
您可以檢查一下這個被設置爲使用phpinfo()函數創建一個腳本,用下面的,上傳它,它指向你的網頁瀏覽器(確保你刪除它做一次,因爲它給掉潛在的敏感信息):
<?php
phpinfo()
?>
在底部尋找「memory_limit」。如果它設置爲8兆字節,那就是你的問題。
謝謝,我把它放在20M,一切正常!我很驚訝共享主機可以讓我請求更多的內存......我想我可以從ini_set()中擠出的內存量有限制嗎? – John 2009-02-01 14:40:19