最近碰到的問題 Fatal error: Allowed memory size of XXX bytes exhausted 的兩種解決方法

有人來問到底前陣子發生什麼事情,那就順便寫一下。前陣子的伺服器延遲狀況,其實是因為同時開兩個WordPress,然後為了要多使用外掛,因此我將記憶體的分配調得過高,以至於達到虛擬主機資源的上限,反而讓多人連線的時候無法分配到資源,因此常常處於「連線中」但是網頁出不來的狀況。

  • 這個問題為何會出來?

WordPress升級到2.8之後,預設的32MB記憶體往往不夠使用,這個時候會看到如下的錯誤,會在什麼地方看到並不一定,基本上累加超過你的記憶體上限就會出現了。

Fatal error: Allowed memory size of 33554432 bytes exhausted

因此要手動開啟更多記憶體分配給WP,至於要如何開啟,依照你的伺服器不同,會有幾個方法。

  • 分配更多記憶體的方法

一般網路上建議的主要方法:

  1. WP2.8是將wp-setting.php中的define(‘WP_MEMORY_LIMIT’, ’32M’);後面的32M給改成更大的數值即可。
  2. WP2.9左右在wp-config.php中也加入了這條參數,當然也是一併修改。不過我的伺服器不適用這個方法。
  • 另外一個分配更多記憶體的方法

我的伺服器必需要在各個目錄中,都要新增一個php.ini的檔案,內容如下,就這樣一行就好。

memory_limit = 64M

這樣的話就可以分配更多資源給WP,不過虛擬主機一個用戶能分到的資源,往往是主機的幾十分之一,要更多的資源,必需要用VPS這樣的東西。因此像我一次兩個網誌開成兩倍的情況下,等於耗用原本四倍的資源,上限本身就不高的情況下,自然會排擠到其他用戶的使用,導致連線狀況變得緩慢。

因此我就把*yonglan:F那邊的記憶體修改檔全部停止,*yonglan這邊的略為提高,改成「memory_limit = 40M」,這樣讓主機有比較多的資源能分配給各用戶,所以速度感覺起來就回復到原來的狀況。

我開的外掛應該不算多,*yonglan這邊三個(備份+阻擋廣告+Google分析),*yonglan:F那邊四個(備份+阻擋廣告+Google分析+首頁的特效),可見和WP本身變得巨大也有關係。

WordPress開發網站外掛筆記

最近協助朋友「組裝」商業網站,試了一堆Wordpress的外掛,這邊作個筆記,基本上除了廣告功能還沒有完全符合需求的,其他都還OK。整個站的程式部份做完花不到2000元,和當時估價出來的27萬差了幾十倍,功能卻多了非常多,看來這年頭網站設計也很廉價。

文字編輯

  • Raw HTML capability
    修正wordpress的自動修正語法不當的狀況(例如美式的引號會被轉成其他符號)。

文章管理

  • My Category Order
    依照你的喜好排列類別的順序,老外應該比較沒有這方面困擾(預設是abc…)。

後台會員管理

  • AmR users
    依照自己想要的方式排列會員清單,例如依照電子郵件或是加入時間排列等,下面經由Pie Register自定義的欄位也可以顯示。
  • Capability Manager
    管理各身份等級能做事情的權限,當然主要是管理「訂閱者」能做的事情。
  • WP Hide Dashboard
    隱藏起來後台的「管理首頁」,因為原本的「訂閱者」權限也會看到網站後台的首頁資料統計,所以要隱藏起來。

前台會員功能

  • Member Access
    主要是讓文章限定加入會員才可以點閱,也可以指定單篇文章的權限;沒有加入會員的人,會被帶往註冊畫面或是其他特定頁面。
  • Pie Register
    某個知名自訂會員欄位功能外掛的升級版,升級的部份和paypal有關係,所以用不到。使用這幾隻類似外掛的時候,因為會抓你輸入的字直接當參數,因此設定時前面一定要先輸入英文字,才能夠正確定義參數。

電子報系統

  • MailPress
    會自行同步新會員到郵件群組中,可以定期自動寄發網站新文章給會員,也可以手動寄發電子報,也可以統計點閱率,是個規模相當龐大的外掛。

廣告系統

  • Max Banner Ads PRO(美金47元)
    廣告系統,可以嵌入模板中進行廣告輪撥,可以統計個別顯示的次數和點擊率,但是沒有辦法自動排程上下架。

聯絡

訪客資訊

系統備份