How to Increase PHP memory limit

webmaster ที่ใช้ PHP อาจเคยเจอปัญหา Fatal Error: PHP Allowed Memory Size Exhausted  หลังเรียกใช้บางคำสัง กันมาบ้างแล้ว ซึ่งปัญหานี้เกิดจากหน่วยความจำไม่พอหรือใช้เกิน maximum memory limit  ทางแก้คือต้องเพิ่ม php memory limit

แรกเลย ดูก่อนว่า ควรใช้หน่วยความจำเท่าไหร่

PHP Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y) in whatever.php

ค่าเริ่มต้นส่วนใหญ่จะเป็น 8M หรือ 16M โดยเราสามารถดูค่าของระบบได้ในไฟล์ php.ini แล้วหา memory_limit:

memory_limit = 16M ; Maximum amount of memory a script may consume (16MB)

วิธีการแก้ไข 3 วิธี มีข้อดี-ข้อเสียต่างกันไป

1. แก้ไข memory_limit ทั้งระบบจาก php.ini

วิธีง่ายที่สุดคือการแก้ไขไฟล์ php.ini และ เปลี่ยนค่าใน the memory_limit ตามที่ต้องการ ex:

memory_limit = 32M

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

Note: ถ้าไม่ต้องการจำกัดหน่วยความจำ ให้ตั้งค่าเป็น -1

2. แก้ไข memory_limit โดยใช้ .htaccess สำหรับ folder/vhost

การแก้ไข memory_limit ทั้งระบบอาจไม่ใช่ความคิดที่ดี เราสามารถตั้งค่าเฉพาะสำหรับใน folder (normally one application or virtual host) โดยเพิ่มคำสั่งลงใน .htaccess อย่างในนี้:

php_value memory_limit 64M

การแก้ไขนี้ส่งผลเฉพาะที่ และใช้ได้ดีสำหรับ webmasters ที่ไม่มีสิทธิในการแก้ไขไฟล์ระบบ โดยการวิธีนี้สามารถเห็นผลได้ทันทีที่เรียกใช้งาน

3. แก้ไข memory_limit จากใน php script เอง

สำหรับ การความคุมที่มีประสิทธิภาพมากขึ้น เราสามารถตั้งค่าจากใน php script ได้เลย โดยใส่คำสั่งลงใน code:

ini_set('memory_limit', '64M');

วิธีนี้สามารถควบคุมให้ส่งผลเฉพาะที่ได้เลย  โดยจะเห็นผลทันทีหลังแก้ไข เหมือนกับวิธีที่ 2

Comments

Post new comment

The content of this field is kept private and will not be shown publicly. If you have a Gravatar account, used to display your avatar.