การแก้ไขปัญหา PHP Fatal error: Allowed memory size of 8388608 bytes exhausted (tried…

ปัญหานี้จะเกิดขึ้นให้เราเห็นเวลาที่เรานำเข้า (import) ข้อมูลเยอะๆ ครับ สาเหตุถ้าพูดให้เข้าใจง่ายๆ หน่อยก็จะเป็นเพราะเซิฟเวอร์ (server) หรือว่าโฮส (host) ของเราต้องการใช้หน่วยความจำมากกว่าที่กำหนดไว้ในไฟล์ php.ini ปกติแล้วค่าเริ่มต้นจะเป็น 8M ครับ

วิธีแก้ก็คือ ถ้าเป็นโฮสที่เราเช่าเราจะเข้าไปแตะไฟล์ php.ini ไม่ได้เราก็ต้องเซตด้วยฟังก์ชัน ini_set ของ php ซึ่งจะเป็นการตั้งค่าในระดับไฟล์ครับ

ini_set("memory_limit","12M");

หรืออีกวิธีหนึ่ง วิธีนี้จะใช้ได้ในกรณีที่เราสามารถแก้ไขไฟล์ php.ini ได้ครับ แล้วก็ไปตั้งค่าตัวแปร memory_limit ครับ

memory_limit=12M

ตรง 12M นี้ให้เราเพิ่มขึ้นเรื่อยจน error มันหายอ่ะครับ แต่ต้องระวังหน่อยนะครับเพราะถ้าตั้งค่านี้ไว้สูงๆ ถ้าหากมีไฟล์หรือ script ตัวไหนที่ใช้ memory เยอะๆ และมีการทำงานบ่อยๆ เช่น การ import/export ข้อมูลเยอะๆ จะทำให้ประสิทธิภาพของเซิฟเวอร์ลดลงด้วย