คำเต็มๆของเออเร่อตัวนี้คือ Fatal error: Allowed memory size of 67108864 bytes exhausted หมายความว่า หน่วยความจำที่อนุญาติให้ใช้งานบนเซิฟเวอร์มีแค่ 64M แต่คุณกำลังพยายามที่จะใช้หน่วยความจำมากกว่านั้น
เออเร่อตัวนี้ผมเจอในการใช้งานคลาส PHPExcel ซึ่งเป็นคลาสที่ใช้สำหรับสร้างไฟล์ Excel ด้วยภาษา PHP
คลาสตัวนี้เรียกได้ว่าอลังการงานสร้างเลยก็ว่าได้ ของเขาสุดยอดจริงๆครับพี่น้อง แต่สิ่งหนึ่งที่ผมประสบปัญหาก็คือเออเร่อดังที่กล่าวข้างต้น Fatal error: Allowed memory size of 67108864 bytes exhausted โปรแกรมที่ผมเขียนอายุได้สักประมาณ 1 ปีครึ่งแล้วเห็นจะได้ ผมใช้ PHPExcel เวอร์ชั่น 1.6.7 ผมลองใช้คำสั่ง memory_get_usage() เพื่อดูว่ามันใช้หน่วยความจำไปเท่าไร ปรากฎว่า 71.5 M
แม่เจ้า… เว็บเซิฟเวอร์ที่เช่าเค้าไว้เขาอนุญาติแค่ 64M ผมจำใจต้องย้ายเซิฟเวอร์เพื่อไปหาที่ๆเขาอนุญาติให้ใช้หน่วยความจำได้มากกว่านี้ แพงกว่าด้วย
ผมบ่นกับตัวเองพอสมควรทีเดียว ว่าทำไมมันทำมากินหน่วยความจำขนาดนี้นะ พยายามหาวิธี caching มาช่วยก็เสียเวลาเปล่า
แล้ววันนี้ผมนึกอะไรขึ้นมามิซาบบบบบ…. ผมเข้าไปที่เว็บ PHPExcel แล้วก็เห็นเขาออกเวอร์ชั่นใหม่มาตั้งนมนานแล้ว 1.7.2 ก็เลยดาวน์โหลดมาอัปเกรดตัวเก่าที่อยู่ในเครื่อง
พระเจ้าช่วย กล้วยแขกแต่คนไทยขาย โค้ดเดิมจากที่กินหน่วยความจำ 71.5M ลดลงเหลือแค่ 18.8M
ชีวิตผมเป็นอิสระแล้ว
ที่กล่าวมาทั้งหมดนี้ก็เพื่อจะแจ้งข่าวว่า ถ้าใครใช้ PHPExcel เวอร์ชั่นเก่ากว่า 1.7.2 ก็ให้อัปเกรดซะนะครับ เขาปรับปรุงเรื่องการกินหน่วยความจำอันมหาศาลแล้ว
minddezign says:
20/01/2553 at 20/01/2553
ขอบคุณครับ