0Pricing
PHP Academy · บทเรียน

OPcache: การแคชไบต์โค้ด

เปิดใช้และปรับแต่ง OPcache เพื่อลดภาระจากการคอมไพล์สคริปต์ซ้ำ

OPcache: การแคชไบต์โค้ด เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

การทำงานปกติของ PHP

หากไม่มี OPcache ทุกคำขอจะทำให้ PHP อ่านไฟล์ .php จากดิสก์ แยกวิเคราะห์เป็น AST คอมไพล์เป็นโอปโค้ด (ไบต์โค้ด) แล้วจึงเรียกใช้โอปโค้ด

OPcache ทำอะไร

OPcache จัดเก็บโอปโค้ดที่คอมไพล์แล้วไว้ในหน่วยความจำร่วม สำหรับคำขอถัดไป PHP จะข้ามขั้นตอนการแยกวิเคราะห์และคอมไพล์ แล้วไปเรียกใช้โดยตรง

ผลกระทบต่อประสิทธิภาพ

โดยทั่วไป OPcache ช่วยเพิ่มปริมาณงานที่ประมวลผลได้ของแอปพลิเคชัน PHP 2-5 เท่าโดยไม่ต้องแก้ไขโค้ด

การเปิดใช้ OPcache

OPcache มาพร้อมกับ PHP 5.5 ขึ้นไป และเปิดใช้เป็นค่าเริ่มต้นในชุดแจกจ่ายจำนวนมาก ตรวจสอบได้ด้วย php -m | grep -i opcache

# php.ini:
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0

การตั้งค่าหลักของ OPcache

ปรับการตั้งค่าเหล่านี้สำหรับระบบใช้งานจริง:

# php.ini:
opcache.memory_consumption=256      ; MB of shared memory
opcache.interned_strings_buffer=16  ; MB for interned strings
opcache.max_accelerated_files=20000 ; max scripts to cache
opcache.validate_timestamps=0       ; disable for production!
opcache.revalidate_freq=0           ; how often to check timestamps

validate_timestamps=0

ในระบบใช้งานจริง ให้ตั้งค่า validate_timestamps=0 เพื่อปิดการตรวจสอบระบบไฟล์ในทุกคำขอ PHP จะใช้โอปโค้ดที่แคชไว้เสมอ หลังนำโค้ดขึ้นระบบ ให้รีเซ็ตแคช

การรีเซ็ต OPcache

ล้างแคชหลังนำโค้ดเวอร์ชันใหม่ขึ้นระบบ

<?php
opcache_reset(); // from a PHP script
// Or restart PHP-FPM:
$ kill -USR2 $(cat /run/php-fpm.pid)

opcache_get_status()

สอบถามสถิติของ OPcache ขณะทำงานเพื่อติดตามอัตราการพบแคชและการใช้หน่วยความจำ

<?php
$status = opcache_get_status();
echo "Hit rate: ".$status["opcache_statistics"]["opcache_hit_rate"]."%";

การโหลดล่วงหน้า (PHP 7.4 ขึ้นไป)

การโหลดล่วงหน้าของ OPcache จะโหลดไฟล์เฟรมเวิร์กเข้าไปในหน่วยความจำร่วมเมื่อเซิร์ฟเวอร์เริ่มทำงาน จึงขจัดภาระการคอมไพล์แม้ในการเรียกครั้งแรกสำหรับคลาสหลัก

# php.ini:
opcache.preload=/srv/app/preload.php
opcache.preload_user=www-data

การคอมไพล์ JIT (PHP 8.0 ขึ้นไป)

PHP 8 เพิ่มการคอมไพล์ JIT (แบบทันเวลา) บน OPcache โดยแปลงโอปโค้ดเป็นโค้ดเครื่องโดยตรง ให้ประโยชน์สูงสุดกับงานที่ใช้ CPU หนัก แต่มีประโยชน์เพิ่มเพียงเล็กน้อยกับเว็บแอปทั่วไปที่รอการรับส่งข้อมูลเป็นหลัก

# php.ini:
opcache.jit_buffer_size=100M
opcache.jit=1255

คลาสที่เปลี่ยนแปลงไม่ได้

OPcache สามารถใช้สตริงที่จัดเก็บร่วมกันและคำจำกัดความคลาสที่เปลี่ยนแปลงไม่ได้ร่วมกันระหว่างกระบวนการทำงาน ช่วยลดการใช้หน่วยความจำของแต่ละกระบวนการ

สรุป

เปิดใช้ OPcache ในระบบใช้งานจริงด้วย validate_timestamps=0 ล้างแคชหลังนำโค้ดขึ้นระบบด้วย opcache_reset() หรือรีสตาร์ต PHP-FPM ตรวจสอบอัตราการพบแคชด้วย opcache_get_status()

ตรวจสอบความเข้าใจอย่างรวดเร็ว

การตั้งค่าใดใน php.ini ที่ควรเป็น 0 ในระบบใช้งานจริงเพื่อให้ OPcache มีประสิทธิภาพสูงสุด

คำถามที่พบบ่อย

บทเรียน “OPcache: การแคชไบต์โค้ด” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “OPcache: การแคชไบต์โค้ด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “OPcache: การแคชไบต์โค้ด”

เปิดใช้และปรับแต่ง OPcache เพื่อลดภาระจากการคอมไพล์สคริปต์ซ้ำ คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “OPcache: การแคชไบต์โค้ด” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การทำโปรไฟล์ PHP ด้วย Xdebug
  2. OPcache: การแคชไบต์โค้ด
  3. การปรับปรุงประสิทธิภาพคำสืบค้นฐานข้อมูล
  4. การจัดการหน่วยความจำและเคล็ดลับด้านประสิทธิภาพ
← กลับไปที่ PHP Academy