ปัญหา PHP ไม่ยอมอ่านค่าใหม่เมื่อมีการแก้ไขไฟล์ ตอนที่ 2
วิธีแก้ปัญหาในกรณีนี้คือเราต้องทำการล้างหน่วยความจำก่อนที่จะโหลดใหม่ด้วยคำสั่ง
opcache_invalidate ( string $filename , bool $force=false ): bool
ตัวอย่าง
<?php
// อ่านข้อมูลจากไฟล์ ครั้งแรก
$result = require('datas.php');
// array ( )
var_export($result);
// เขียนไฟล์
file_put_contents('datas.php', '<?php return array("test");');
// อ่านข้อมูลจากไฟล์ ครั้งที่สอง ยังไม่มีอะไรเปลี่ยนแปลง ถึงแม้เนื้อหาของไฟล์จะถูกเขียนใหม่แล้วก็ตาม
$result = require('datas.php');
// array ( )
var_export($result);
// เคลียร์แคช
opcache_invalidate('datas.php');
// อ่านข้อมูลจากไฟล์ หลังจากเคลียร์แคชแล้ว ถึงจะเห็นความเปลี่ยนแปลง
$result = require('datas.php');
// array ( 0 => 'test', )
var_export($result);
?>
เนื้อหาในไฟล์ datas.php เริ่มต้น
<?php return array();
หมายเหตุ การล้างนี้เป็นการล้างข้อมูลในหน่วยความจำเท่านั้น ไม่ใช่เป็นการล้างแคชของไฟล์