Alternative PHP Cache (APC) เป็นแคชโค้ดสาธารณะที่ได้รับการปรับแต่งฟรีสำหรับ PHP ใช้เพื่อมอบเฟรมเวิร์กที่เปิดกว้างและฟรีสำหรับการแคชและเพิ่มประสิทธิภาพโค้ดระดับกลาง PHP
เว็บไซต์อย่างเป็นทางการของ APC คือ http://pecl.php.net/package/apc
ที่อยู่การดาวน์โหลดของ
โมดูลส่วนขยายภายใต้ Windows คือ http://www.sitebuddy.com/php/accelerators/apc_windows_binaries_builds
ต้องใช้ไดเร็กทอรี c:tmp และไดเร็กทอรีจะต้องสามารถเขียนได้โดยกระบวนการของเว็บเซิร์ฟเวอร์
1. ติดตั้ง
เป็นส่วนขยาย PHP
2. กำหนดค่า
ตัวเลือกการเพิ่มประสิทธิภาพบูลีน
apc.optimization
APC สามารถเปลี่ยนแปลงได้ในสคริปต์
คำอธิบายโดยละเอียดของตัวเลือกการกำหนดค่า PHP.ini
[APC]
; PHP Cache ทางเลือกใช้เพื่อแคชและเพิ่มประสิทธิภาพ PHP ระดับกลาง code
apc.cache_by_default = เปิด
;SYS
; ว่าจะเปิดใช้งานการบัฟเฟอร์สำหรับไฟล์ทั้งหมดตามค่าเริ่มต้นหรือไม่
; หากตั้งค่าเป็นปิดและใช้กับคำสั่ง apc.filters ที่ขึ้นต้นด้วยเครื่องหมายบวก ไฟล์จะถูกแคชเฉพาะเมื่อตรงกับตัวกรองเท่านั้น
apc.enable_cli = Off
;SYS
; ไม่ว่าจะเปิดใช้งานฟังก์ชัน APC สำหรับเวอร์ชัน CLI หรือไม่ ให้เปิดคำสั่งนี้เพื่อการทดสอบและการดีบักเท่านั้น
apc.enabled = On
; ไม่ว่าจะเปิดใช้งาน APC หรือไม่ หาก APC ได้รับการคอมไพล์เป็น PHP และคุณต้องการปิดการใช้งานนี่เป็นวิธีเดียว
apc.file_update_protection = 2
;SYS
; เมื่อคุณแก้ไขไฟล์บนเซิร์ฟเวอร์ที่ทำงานอยู่ คุณควรดำเนินการแบบอะตอมมิก
; นั่นคือเขียนลงในไฟล์ชั่วคราวก่อนแล้วจึงเปลี่ยนชื่อ (mv) ไฟล์เป็นชื่อสุดท้าย
; โปรแกรมแก้ไขข้อความและโปรแกรมเช่น cp และ tar ไม่ทำงานในลักษณะนี้ ส่งผลให้มีความเป็นไปได้ในการบัฟเฟอร์ไฟล์ที่ไม่สมบูรณ์
; ค่าเริ่มต้น 2 หมายความว่าเมื่อเข้าถึงไฟล์ หากพบว่าเวลาแก้ไขน้อยกว่า 2 วินาทีจากเวลาเข้าถึง จะไม่มีการบัฟเฟอร์
; ผู้เยี่ยมชมที่โชคร้ายอาจได้รับเนื้อหาที่เสียหาย แต่ผลเสียไม่ได้ถูกขยายโดยการแคช
; หากคุณสามารถมั่นใจได้ว่าการดำเนินการอัพเดตทั้งหมดเป็นแบบอะตอมมิก คุณสามารถปิดคุณสมบัตินี้ได้ด้วย 0
; หากระบบของคุณอัปเดตช้าเนื่องจากการดำเนินการ IO จำนวนมาก คุณอาจต้องเพิ่มค่านี้
apc.filters =
;SYS
; รายการที่คั่นด้วยเครื่องหมายจุลภาคของ POSIX ขยายนิพจน์ทั่วไป
; หากชื่อไฟล์ต้นฉบับตรงกับรูปแบบใดๆ ไฟล์นั้นจะไม่ถูกแคช
; โปรดทราบว่าชื่อไฟล์ที่ใช้จับคู่คือชื่อไฟล์ที่ส่งผ่านเพื่อรวม/ต้องการ ไม่ใช่เส้นทางที่แน่นอน
; หากอักขระตัวแรกของนิพจน์ทั่วไปคือ "+" หมายความว่าไฟล์ใด ๆ ที่ตรงกับนิพจน์จะถูกแคช
; หากอักขระตัวแรกคือ "-" การจับคู่ใด ๆ จะไม่ถูกแคช "-" คือค่าเริ่มต้นและสามารถละเว้นได้
apc.ttl = 0
;SYS
; จำนวนวินาทีที่รายการแคชได้รับอนุญาตให้อยู่ในบัฟเฟอร์ 0 หมายถึงไม่เคยหมดเวลา ค่าที่แนะนำคือ 7200~36000
; การตั้งค่าเป็น 0 หมายความว่าบัฟเฟอร์อาจเต็มไปด้วยรายการแคชเก่า ป้องกันไม่ให้รายการใหม่ถูกแคช
apc.user_ttl = 0
;SYS
; คล้ายกับ apc.ttl แต่สำหรับผู้ใช้แต่ละคน ค่าที่แนะนำคือ 7200~36000
; การตั้งค่าเป็น 0 หมายความว่าบัฟเฟอร์อาจเต็มไปด้วยรายการแคชเก่า ป้องกันไม่ให้รายการใหม่ถูกแคช
apc.gc_ttl = 3600
;SYS
; จำนวนวินาทีที่รายการแคชสามารถมีอยู่ในตารางการรวบรวมขยะ
; ค่านี้จัดให้มีมาตรการด้านความปลอดภัย ดังนั้นแม้ว่ากระบวนการเซิร์ฟเวอร์จะขัดข้องขณะเรียกใช้ไฟล์ต้นฉบับที่แคชไว้
และไฟล์ต้นฉบับได้รับการแก้ไขแล้ว หน่วยความจำที่จัดสรรสำหรับเวอร์ชันเก่าจะไม่ถูกเรียกคืนจนกว่าจะถึงค่า TTL นี้
; ตั้งค่าเป็นศูนย์เพื่อปิดใช้งานคุณสมบัตินี้
apc.include_once_override = ปิด
;SYS
; โปรดปิดไว้ มิฉะนั้นอาจทำให้เกิดผลลัพธ์ที่ไม่คาดคิด
apc.max_file_size = 1M
;SYS
; ปิดการใช้งานไฟล์ที่มีขนาดใหญ่กว่าขนาดนี้จากการถูกแคช
apc.mmap_file_mask =
;
หากการคอมไพล์การสนับสนุน MMAP สำหรับ APC โดยใช้ --enable-mmap (เปิดใช้งานโดยค่าเริ่มต้น) ;
ค่าที่นี่คือรูปแบบไฟล์ mktemp ที่ส่งผ่านไปยังโมดูล mmap (ค่าที่แนะนำคือ "/tmp /apc.XXXXXX")
; มาสก์นี้ใช้เพื่อกำหนดว่าพื้นที่ที่แมปหน่วยความจำควรได้รับการสำรองไฟล์หรือหน่วยความจำที่ใช้ร่วมกัน
; สำหรับการแมปหน่วยความจำที่สำรองไฟล์โดยตรง ให้ตั้งค่าเป็น "/tmp/apc.XXXXXX" (เท่ากับ 6 X)
; หากต้องการใช้ shm_open/mmap แบบ POSIX จะต้องตั้งค่าเป็น "/apc.shm.XXXXXX"
; คุณยังสามารถตั้งค่าเป็น "/dev/zero" เพื่อใช้อินเทอร์เฟซ "/dev/zero" ของเคอร์เนลสำหรับหน่วยความจำที่แมปโดยไม่ระบุชื่อ
; ไม่ได้กำหนดคำสั่งนี้บังคับให้ใช้การทำแผนที่แบบไม่ระบุชื่อ
apc.num_files_hint = 1000
; SYS
; จำนวนไฟล์ต้นฉบับต่างๆ โดยประมาณที่อาจรวมหรือร้องขอบนเว็บเซิร์ฟเวอร์ (ค่าที่แนะนำคือ 1024~4096)
; หากคุณไม่แน่ใจ ให้ตั้งค่าเป็น 0 โดยส่วนใหญ่จะใช้สำหรับไซต์ที่มีไฟล์ต้นฉบับหลายพันไฟล์
apc.optimization = 0
; ระดับการเพิ่มประสิทธิภาพ (ค่าที่แนะนำคือ 0)
; ค่าจำนวนเต็มบวกเปิดใช้งานเครื่องมือเพิ่มประสิทธิภาพ โดยมีค่าที่สูงกว่าโดยใช้การปรับให้เหมาะสมเชิงรุกมากขึ้น
; ค่าที่สูงกว่าอาจมีการปรับปรุงความเร็วที่จำกัดมาก แต่ขณะนี้อยู่ระหว่างการทดลอง
apc.report_autofilter = ปิด
;SYS
; ว่าจะบันทึกสคริปต์ทั้งหมดที่ไม่ได้ถูกแคชโดยอัตโนมัติเนื่องจากเหตุผลในการผูกข้อมูลก่อนเวลาหรือล่าช้า
apc.shm_segments = 1
;SYS
; จำนวนบล็อกหน่วยความจำแบบแบ่งใช้ที่จัดสรรสำหรับบัฟเฟอร์คอมไพเลอร์ (ค่าที่แนะนำคือ 1)
; หาก APC หน่วยความจำที่ใช้ร่วมกันไม่เพียงพอ และคำสั่ง apc.shm_size ถูกตั้งค่าเป็นค่าสูงสุดที่ระบบอนุญาต
คุณสามารถลองเพิ่มค่านี้ได้
apc.shm_size = 30
; SYS
; ขนาดของแต่ละบล็อกหน่วยความจำแบบแบ่งใช้ (ในหน่วย MB ค่าที่แนะนำคือ 128~256)
; บางระบบ (รวมถึงรุ่น BSD ส่วนใหญ่) มีขนาดบล็อกหน่วยความจำแบบแบ่งใช้เริ่มต้นที่เล็กมาก
apc.slam_defense = 0
;SYS (ขัดต่อการใช้คำสั่งนี้ ขอแนะนำให้ใช้คำสั่ง apc.write_lock)
; บนเซิร์ฟเวอร์ที่ยุ่งมาก ไม่ว่าจะเริ่มบริการหรือแก้ไขไฟล์
; กระบวนการหลายอย่างที่พยายามแคชไฟล์ในเวลาเดียวกัน ทำให้เกิดสภาวะการแข่งขัน
คำสั่งนี้ใช้เพื่อตั้งค่าเปอร์เซ็นต์ที่กระบวนการจะข้ามขั้นตอนการแคชเมื่อประมวลผลไฟล์ที่ไม่แคช
ตัวอย่างเช่น การตั้งค่าเป็น 75 หมายความว่ามีความน่าจะเป็น 75% ที่จะไม่แคชเมื่อพบไฟล์ที่ไม่ได้แคช ซึ่งช่วยลดโอกาสที่จะเกิดการชนกัน
แนะนำให้ตั้งค่าเป็น 0 เพื่อปิดใช้งานคุณสมบัตินี้
apc.stat = เปิด
;SYS
; ว่าจะเปิดใช้งานการตรวจสอบการอัพเดตสคริปต์หรือไม่
; ระวังให้มากเมื่อเปลี่ยนค่าคำสั่งนี้
; ค่าดีฟอลต์ On ระบุว่า APC ตรวจสอบว่าสคริปต์ได้รับการอัปเดตทุกครั้งที่มีการร้องขอหรือ
ไม่ หากมีการอัปเดต ระบบจะคอมไพล์ใหม่และแคชเนื้อหาที่คอมไพล์แล้ว อย่างไรก็ตาม การทำเช่นนี้มีผลกระทบด้านลบต่อประสิทธิภาพการทำงาน
; หากตั้งค่าเป็น ปิด จะไม่มีการตรวจสอบ ดังนั้นจึงปรับปรุงประสิทธิภาพได้อย่างมาก
; แต่เพื่อให้เนื้อหาที่อัปเดตมีผล คุณต้องรีสตาร์ทเว็บเซิร์ฟเวอร์
; คำสั่งนี้ยังใช้ได้กับไฟล์รวม/ต้องการ แต่ควรสังเกตว่า
; หากคุณใช้เส้นทางสัมพัทธ์ APC จะต้องตรวจสอบเพื่อค้นหาไฟล์ทุกครั้งที่รวม/ต้องการ
; การใช้พาธสัมบูรณ์สามารถข้ามการตรวจสอบได้ ดังนั้น เราขอแนะนำให้คุณใช้พาธสัมบูรณ์สำหรับการดำเนินการรวม/ต้องการ
apc.user_entries_hint = 100
;SYS
; คล้ายกับคำสั่ง num_files_hint แต่สำหรับผู้ใช้แต่ละคน
; หากคุณไม่แน่ใจ ให้ตั้งค่าเป็น 0
apc.write_lock = เปิด
;SYS
; ว่าจะเปิดใช้งานการล็อคการเขียนหรือไม่
; บนเซิร์ฟเวอร์ที่ยุ่งมาก ไม่ว่าจะเริ่มบริการหรือแก้ไขไฟล์
; สภาวะการแข่งขันอาจเป็นผลมาจากหลายกระบวนการที่พยายามแคชไฟล์ในเวลาเดียวกัน
; เปิดใช้งานคำสั่งนี้เพื่อหลีกเลี่ยงสภาพการแข่งขัน
apc.rfc1867 = ปิด
;SYS
; หลังจากเปิดคำสั่งนี้ สำหรับไฟล์ที่อัปโหลดแต่ละไฟล์ที่มีฟิลด์ APC_UPLOAD_PROGRESS ก่อนฟิลด์ไฟล์
; APC จะสร้างรายการแคชผู้ใช้สำหรับ upload_ โดยอัตโนมัติ (นั่นคือค่าฟิลด์ APC_UPLOAD_PROGRESS)
3. ฟังก์ชั่น
apc_cache_info - ดึงข้อมูลแคช (และ meta-data) จากที่เก็บข้อมูลของ APC
apc_clear_cache - ล้างแคช APC
apc_define_constants - กำหนดชุดของค่าคงที่สำหรับการดึงข้อมูลในภายหลังและการกำหนดมวล
apc_delete - ลบตัวแปรที่เก็บไว้ออกจากแคช
apc_fetch - ดึงตัวแปรที่เก็บไว้จากแคช
apc_load_constants - โหลดชุดค่าคงที่จากแคช
apc_sma_info - ดึงข้อมูลการจัดสรรหน่วยความจำที่ใช้ร่วมกันของ APC
apc_store - แคชตัวแปรในที่เก็บข้อมูล
การใช้งาน apc นั้นค่อนข้างง่าย โดยมีฟังก์ชันเพียงไม่กี่อย่างตามรายการด้านล่าง
apc_cache_info () ส่งคืนข้อมูลแคช
apc_clear_cache() ล้างเนื้อหาแคช apc
ตามค่าเริ่มต้น (ไม่มีพารามิเตอร์) ระบบจะล้างเฉพาะแคชของระบบ หากต้องการล้างแคชผู้ใช้ ให้ใช้พารามิเตอร์ 'ผู้ใช้'
apc_define_constants (คีย์สตริง, ค่าคงที่อาร์เรย์ [, bool case_sensitive]) เพิ่มค่าคงที่อาร์เรย์ให้กับแคชเป็นค่าคงที่
apc_load_constants (คีย์สตริง)
ลบแคชคงที่
apc_store (คีย์สตริง, var แบบผสม [, int ttl] )
บันทึกข้อมูลในแคช
apc_fetch(คีย์สตริง)
รับเนื้อหาแคช apc_delete (คีย์สตริง) ที่บันทึกโดย
apc_store
ลบเนื้อหาที่บันทึกโดย apc_store
การจัดการ Apc:
ไปที่ pecl.php.net เพื่อดาวน์โหลดแพ็คเกจซอร์สโค้ด apc และมี apc.php คัดลอกไปยังตำแหน่งที่เว็บเซิร์ฟเวอร์ของคุณสามารถเข้าถึงได้ และเรียกดูเพื่อเข้าถึง
ฟังก์ชั่นอินเทอร์เฟซการจัดการคือ:
1. รีเฟรชข้อมูล
2. ดูสถิติโฮสต์
3. รายการแคชของระบบ
4. รายการแคชของผู้ใช้
5. ตรวจสอบเวอร์ชัน