หยุดการแคช PHP 5.5.3 ใน MAMP


123

ติดตั้ง MAMP บน Macbook เครื่องใหม่ที่มี PHP 5.5.3

โหลดซ้ำและรีเฟรชไม่ต้องทำอะไรเลย ยังคงไม่มีอะไร. Google ประมาณสองสามนาทีเพื่อพยายามค้นหาว่ามีอะไรผิดพลาดกลับมาและรีเฟรช มันได้ผล. ห่า?

ฉันเข้าไปที่ php.ini และปิดใช้งาน OPcache ใหม่ทั้งหมดและตั้งค่าเวลาแคชเริ่มต้นเป็น 0 เพิ่มส่วนหัวในเอกสารเพื่อบังคับให้ไม่มีการแคช ยังคงเป็นปัญหาเดิม เกิดอะไรขึ้นที่นี่?

แท็บเครือข่ายกำลังแสดงคำขอ HTTP 200 ดังนั้น HTML ใหม่ใด ๆ ในindex.phpไฟล์จึงแสดงผลได้ดี แต่ PHP ใหม่ที่เซิร์ฟเวอร์ต้องแสดงผลนั้นล่าช้าและไม่แสดงผลจนกว่าชุดเวลาที่กำหนดไว้ล่วงหน้าจะผ่านไปซึ่งฉันไม่รู้ว่า เพื่อเปลี่ยนแปลง. เกิดอะไรขึ้น?

ฉันตรวจสอบสิ่งนี้ใน Safari ด้วยดังนั้นจึงเป็นเซิร์ฟเวอร์ที่ป้องกันไม่ให้ไฟล์แสดงผล

ข้อเท็จจริงที่น่าสนใจคือถ้าฉันไปที่ MAMP และเปลี่ยนเวอร์ชัน PHP เป็นเวอร์ชันเก่า (PHP 5.2 หรือบางอย่าง) มันจะแสดงผลตามปกติโดยไม่มี "ปัญหาการแคช" เปลี่ยนเป็น PHP 5.5 แล้วมันก็วางสาย ในตัวเลือกการแคชการตั้งค่า MAMP สำหรับ 5.5 ไม่มีอยู่และจะปิดใช้งานโดยอัตโนมัติ


4
ฉันรู้ว่านี่ไม่ใช่วิธีแก้ปัญหาของคุณ แต่โดยส่วนตัวแล้วฉันไม่ใช่แฟนตัวยงของ MAMP เนื่องจากโดยเฉพาะอย่างยิ่งเมื่อติดตั้งสแต็กแบบกำหนดเองนั้นง่ายมาก - นี่คือคำแนะนำที่รวดเร็วในการติดตั้งสแต็กโดยใช้ homebrew: github .com / josegonzalez / homebrew-php
mewm

@mewm ฉันไม่รู้เลยว่ามันง่ายขนาดนี้ ไชโย! ใช้สิ่งนี้เพื่อเริ่มต้นกับ nginx ด้วยการกดแป้นพิมพ์ไม่กี่ครั้ง learnaholic.me/2012/10/10/…
willdanceforfun

คำตอบ:


207

ปิดใช้งาน OPCache

ตอนนี้ MAMP เปิด OPCache ตามค่าเริ่มต้นคุณสามารถปิดใช้งานได้โดยแก้ไขไฟล์ php.ini ของคุณ ตรวจสอบให้แน่ใจว่าคุณแก้ไข php.ini ที่ถูกต้อง

ฉันประสบปัญหาเดียวกันกับตัวเอง MAMP ที่มี PHP เวอร์ชัน 5.5.3 จะเรียกใช้ OPcache ตามค่าเริ่มต้น แต่คุณไม่สามารถปิดใน GUI ได้เหมือนที่คุณทำได้กับ PHP เวอร์ชันเก่า 5.2.17 คุณต้องคอมเมนต์บรรทัด OPcache ทั้งหมดด้วยตนเองที่ส่วนท้ายของไฟล์ php.ini (MAMP / bin / php / [version] /conf/php.ini) และตรวจสอบให้แน่ใจว่าได้หยุดและเริ่มเซิร์ฟเวอร์เพื่อให้การเปลี่ยนแปลงเกิดขึ้น ผล

ฉันปรับปรุง URI การเปลี่ยนแปลงที่สามารถสะท้อนแสงโดยยังมีการเปลี่ยนแปลง / conf / ภายใต้โฟลเดอร์ PHP, แต่ดูเหมือนว่าจะไม่สนใจ MAMP เหล่านี้หลังจากที่เริ่มต้น


4
ฉันมีปัญหาเดียวกันและแก้ไขได้โดยแสดงความคิดเห็นในบรรทัด opcache มันน่างงที่คุณต้องเข้าไปในไฟล์ php.ini เพื่อเปลี่ยนสิ่งนี้ จริงๆแล้วมันค่อนข้างทำให้เข้าใจผิดเนื่องจากดูเหมือนว่าคุณจะมีตัวเลือกการแคชทั้งหมดที่ระบุไว้ในกล่องแบบเลื่อนลง MAMP-> Preferences
JaredH

17
ฉันสงสัยว่าผู้สร้าง MAMP ใช้ส่วนไหนของร่างกายในการคิดในขณะที่เพิ่ม "ฟีเจอร์เด็ด" นี้
Sergii

ฉันคิดว่าฉันมีบางอย่างผิดปกติกับการติดตั้ง ModX ของฉัน แต่ไม่คำตอบของคุณดูเหมือนจะได้รับการแก้ไขแล้ว ขอบคุณ นอกจากนั้นฉันยังเปลี่ยนกลับไปใช้เวอร์ชันเก่ากว่าด้วย ตอนนี้วิ่งได้ดีขึ้นมาก
vr_driver

67
โปรดทราบว่าphp.iniไฟล์ที่คุณต้องการแก้ไขอยู่ใน / bin ไม่ใช่ใน / conf /Applications/MAMP/bin/php/php5.5.3/conf/php.iniเส้นทางแบบเต็มของฉันคือ
Husky

ฉันได้ส่งรายงานข้อบกพร่องแล้วหวังว่าพวกเขาจะปิดการใช้งานโดยค่าเริ่มต้นในเวอร์ชันอนาคต: bugs.mamp.info/view.php?id=4296
Husky

38

ฉันเพิ่มopcache_reset (); ใน PHP หลักของฉันเพื่อหยุดการแคชนี้

การลบออกจากphp5.5.3/conf/php.iniไม่ได้ทำอะไรให้ฉัน

แก้ไข

ปรากฎว่ามีไฟล์/Applications/MAMP/bin/php/php5.5.3/conf/php.ini. ได้ผลถ้าฉันแสดงความคิดเห็นที่นั่น


1
การแสดงความคิดเห็น OPcache ในไดเร็กทอรี / bin ใช้ได้ผลสำหรับฉัน! ขอบคุณสำหรับสิ่งนั้น!
daveaspinall

การแสดงความคิดเห็น OPcache ใน php.ini in /Applications/MAMP/bin/php/php5.5.3/conf/php.iniไม่ได้ทำอะไรเลยนอกจากการเพิ่มopcache_reset();ในการindex.phpทำงาน
ДаниилПронин

26

1) ใน /Applications/MAMP/bin/php/php5.5.3/conf/php.ini
2) ตั้งค่า opcache.revalidate_freq = 0
3) รีสตาร์ท MAMP


2
ดูเหมือนว่าจะได้ผล ฉันสนุกกับการใช้โซลูชันนี้ดีกว่าการแสดงความคิดเห็นทั้งหมด แต่มีความแตกต่างหรือไม่?
เกตรี

10

ฉันใช้เวลานานมากในการคิดออกว่ามันเป็นปัญหา MAMP! เหตุใด OPcache จึงถูกเปิดใช้งานโดยค่าเริ่มต้น - และต้องใช้ php.ini tinkering เพื่อปิดการใช้งาน - ในแอปที่ควรใช้สำหรับการทดสอบเว็บไซต์ อย่างไรก็ตามฉันอ่านกระทู้ทั้งหมดนี้และลองใช้วิธีแก้ปัญหาต่างๆ

นี่คือบันทึกย่อของฉันเกี่ยวกับวิธีการทำงานของแต่ละโซลูชันและข้อควรพิจารณาในการเลือกโซลูชัน

แต่ละโซลูชันทำงานของตัวเอง ไม่จำเป็นต้องซ้ำซ้อน


โซลูชันโค้ดหน้าเว็บ

opcache_reset ();

<?php opcache_reset(); ?>
  • ต้องเพิ่มในโค้ดหน้าเว็บ
  • บังคับให้โหลดสคริปต์ทั้งหมดใหม่
  • ทำงานได้โดยไม่ต้องรีสตาร์ทเซิร์ฟเวอร์ MAMP

โซลูชันการกำหนดค่าเซิร์ฟเวอร์

สำคัญ:ใช้php.iniแฟ้มในและไม่ได้อยู่ใน/Applications/MAMP/bin/php/php5.5.3/conf/php.ini /Applications/MAMP/conf/php5.5.3/php.iniปรับให้เหมาะสมหากคุณใช้ PHP เวอร์ชันอื่น

เปิดใช้งาน = 0

[OPcache]
zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
enable=0
  • จะต้องมีการเพิ่มภายใต้ใน[OPcache]php.ini
  • ปิดใช้งาน OPcache
  • ต้องรีสตาร์ทเซิร์ฟเวอร์ MAMP

opcache.revalidate_freq = 0

[OPcache]
zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=0
opcache.fast_shutdown=1
opcache.enable_cli=1
  • แก้ไขopcache.revalidate_freqภายใต้[OPcache]ในphp.ini.
  • ทำให้ OPcache ตรวจสอบการอัปเดตทุกๆ 0 วินาทีแทนที่จะเป็นทุกๆ 60 วินาที
  • ต้องรีสตาร์ทเซิร์ฟเวอร์ MAMP

แสดงความคิดเห็น [OPcache]

;[OPcache]
;zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
;opcache.memory_consumption=128
;opcache.interned_strings_buffer=8
;opcache.max_accelerated_files=4000
;opcache.revalidate_freq=60
;opcache.fast_shutdown=1
;opcache.enable_cli=1
  • แสดงความคิดเห็นออกทั้งในส่วน[OPcache]php.ini
  • ลบ OPcache ออกจากเซิร์ฟเวอร์ PHP
  • ต้องรีสตาร์ทเซิร์ฟเวอร์ MAMP

การพิจารณา

เลือกโซลูชันโค้ดหน้าเว็บหาก:

  • คุณต้องบังคับให้รีเฟรชสคริปต์สำหรับโปรเจ็กต์เฉพาะ
  • คุณไม่ต้องการรีสตาร์ทเซิร์ฟเวอร์ MAMP
  • คุณไม่ต้องการแก้ไข php.ini

เลือกโซลูชันการกำหนดค่าเซิร์ฟเวอร์หาก:

  • คุณต้องการปิดใช้งานการแคชตามค่าเริ่มต้นแทนที่จะต้องทำในทุกโปรเจ็กต์
  • คุณพอใจกับการแก้ไข php.ini

ฉันชอบเป็นการส่วนตัวenable=0เนื่องจากเป็นวิธีแก้ปัญหาที่ง่ายที่สุดสำหรับฉันและฉันต้องปิดการใช้แคชโดยค่าเริ่มต้น


อ้างอิง


4

MAMP 3.0.7.2 สำหรับ OS X

ดูเหมือนว่านี่จะเป็นตัวเลือก GUI ในที่สุด MAMP 3.0.7.2 for Mac OS X.


สิ่งนี้ไม่ได้ปิดใช้งาน OPCache อย่างเห็นได้ชัด ของฉันยังคงทำงานอยู่แม้ว่าการตั้งค่านี้จะ "ปิด"
auco

2

มันเจ็บปวดที่ใช้เวลาประมาณ 1 ชั่วโมงในการพยายามคิดว่ามันจะเป็นอย่างไร

ฉันเพิ่งเพิ่มสิ่งนี้ที่ส่วนท้ายของโค้ดและรีสตาร์ท MAMP

  opcache.revalidate_freq=0
  opcache_reset();

2

แก้ไข "/Applications/MAMP/conf/php5.5.3/php.ini" และค้นหา [OPcache] และเพิ่มรหัสนี้ลงไปโดยตรง:

opcache.enable=0

สิ่งนี้จะปิดการใช้งาน opcache เมื่อใช้ PHP ในเซิร์ฟเวอร์ MAMP


ทำงานกับเซิร์ฟเวอร์ Ubuntu ของฉัน ขอบคุณ
Sinan Eldem

2

ฉันดีใจที่พบกระทู้นี้! กำลังดึงผมออก! ฉันเพิ่งอัปเกรด MAMP เมื่อวานนี้และไม่สังเกตเห็นปัญหาการแคชนี้จนถึงวันนี้ในขณะที่ทำงานในโครงการ คิดว่าฉันกำลังเสียสติ ฉันเพิ่งเปลี่ยน "/Applications/MAMP/conf/php5.5.3/php.ini" ด้านล่างสุดของไฟล์ opcache.enable = 0


1

นี่เป็นเวอร์ชันปัจจุบันใน MAMP เวอร์ชัน Windows เช่นกัน

C: \ MAMP \ conf \ php5.6.3 \ php.ini

ที่ด้านล่างสุดของไฟล์

ปัญหาอื่น ๆ ที่ฉันพบคือบน QNAP NAS TS-431 การแคชนี้ยังเปิดใช้งานอยู่และหากคุณกำลังทำงานกับไฟล์ที่มีการเปลี่ยนแปลงแบบไดนามิกหรือพยายามที่จะพัฒนามันคุณจะต้องฉีกขนของคุณ ตามความคิดเห็นอื่น ๆ เพียงแค่แสดงความคิดเห็นออกมา การตั้งค่าจะอยู่ใน:

แผงควบคุม / แอปพลิเคชัน / เว็บเซิร์ฟเวอร์ / การบำรุงรักษา PHP.ini

อีกครั้งคุณจะพบการตั้งค่าที่ด้านล่างของไฟล์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.