Tak długo zajęło mi zrozumienie, że był to problem z MAMP! Dlaczego OPcache miałoby być domyślnie włączone - i wymagałoby wyłączenia php.ini majsterkowania - w aplikacji, która ma być używana do testowania stron internetowych? W każdym razie przeczytałem cały ten wątek i wypróbowałem różne rozwiązania.
Oto moje notatki na temat działania każdego rozwiązania i rozważania dotyczące wyboru rozwiązania.
Każde rozwiązanie działa samodzielnie; nie ma potrzeby redundancji.
Rozwiązanie kodu strony internetowej
opcache_reset ();
<?php opcache_reset(); ?>
- Należy dodać w kodzie strony internetowej.
- Wymusza ponowne załadowanie wszystkich skryptów.
- Działa bez restartowania serwera MAMP.
Rozwiązania w zakresie konfiguracji serwerów
Ważne: użyj php.ini
pliku w, /Applications/MAMP/bin/php/php5.5.3/conf/php.ini
a nie w
/Applications/MAMP/conf/php5.5.3/php.ini
. Dostosuj odpowiednio, jeśli używasz innej wersji PHP.
enable = 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
- Należy dodać
[OPcache]
w php.ini
.
- Wyłącza OPcache.
- Wymaga restartu serwera 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
- Modyfikować
opcache.revalidate_freq
pod [OPcache]
w php.ini
.
- Sprawia, że OPcache sprawdza dostępność aktualizacji co 0 sekund zamiast co 60 sekund.
- Wymaga restartu serwera MAMP.
Komentowanie [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
- Skomentuj całą
[OPcache]
sekcję w php.ini
.
- Usuwa OPcache z serwera PHP.
- Wymaga restartu serwera MAMP.
Rozważania
Wybierz rozwiązanie kodu strony internetowej, jeśli:
- Wystarczy wymusić odświeżenie skryptu dla konkretnego projektu
- Nie chcesz ponownie uruchamiać serwera MAMP
- Nie chcesz edytować php.ini
Wybierz rozwiązanie konfiguracji serwera, jeśli:
- Chcesz domyślnie wyłączyć buforowanie zamiast robić to w każdym projekcie
- Nie przeszkadza ci edycja php.ini
Osobiście wolę, enable=0
ponieważ jest to dla mnie najprostsze rozwiązanie i domyślnie potrzebuję wyłączonego buforowania.
Bibliografia