PHP работает с кэш?


Я, заметив, что в моем приложении происходит какая-либо ошибка, либо мой браузер всегда соблюдая кэш, я даже выполнение очистки. У меня есть файл .php и в нем содержатся функции loadEvent, несет ответственность за выполнение запросов select. Получается, что я изменяю инструкцию select, принесет другой результат, если файл .php, обновляю браузер, но результат продолжает прибывать select предыдущей. Через минуту, без меня ничего делать в коде, браузер передает интерпретировать select изменен. Поэтому я спрашиваю: Есть ли возможность .php работать с кэшем в такой ситуации?

Author: viana, 2016-11-21

1 answers

PHP не использует кэш-памяти по умолчанию, это может быть сделано с помощью функции header();, но, как вы сказали, что удалили кэш браузера и все же продолжает показывать те же результаты, то проблема должна быть каким-то расширение Код (читайте также о том, just-in-time (JIT))

PHP-это интерпретируемый язык, то есть на каждый запрос и каждый человек, который обращается к сценарий должны быть истолкованы, расширения Код "спасают" различных "интерпретаций" сценарий в "memoria", "скомпилированный" код, в результате чего сценарий не должен быть полностью обработана, то есть будет только обрабатывать некоторые вещи, это назад, часто преимуществ на время выполнения скрипта, и меньше потребление ресурсов сервера, что является большим преимуществом производственной среды.

Примерами расширения байт-код для PHP:

  • Opcache

    По Умолчанию в php 5.5 и далее, и может быть установлена только в версии 5.2, 5.3 и 5.4 через PECL)

  • APC (не путать с APCu)

    Можете установлено, начиная с PHP 5.1 с помощью PECL

  • Xcache

    , поддерживаемый той же группе, что держит lighttpd, может быть установлен в PHP 5.1, 5.2, 5.3, 5.4, 5.5 и 5.6

То есть в момент, когда вы меняете код, как:

$stmt = mysqli_prepare($link, 'SELECT foo FROM bar WHERE foo=?');
mysqli_stmt_bind_param($stmt, 's', $_GET['foo']);

Что-то вроде:

$stmt = mysqli_prepare($link, 'SELECT foo,nome,sobrenome FROM bar WHERE foo=?');
mysqli_stmt_bind_param($stmt, 's', $_GET['foo']);

В Зависимости от степени сценарий по-прежнему будет работать, как и прежде, единственное, что меняется поведение $_GET['foo'], это потому, что язык был составлен, вероятно промежуточный язык (не обязательно должен быть полноценный язык), так что динамические значения продолжают меняться, но сценарий, сценария нет.

Сама расширение, как правило, обнаруживает изменения, но, как правило, занимает несколько секунд, или потребуется или перезапустите сервер Apache и ngnix, lighttp, etc).

, Если среде разработки рекомендуется отключить расширение php.ini, комментируя расширения с точки с запятой.

. Если вы находитесь в развитие и, используя встроенные функции APC можете попробовать обменять на APCu или memcache

  • , Чтобы отключить Opcache вы можете прокомментировать строки, а также (если это Unix-like):

    ;zend_extension=opcache.so
    

    , Если для Windows:

    ;zend_extension=php_opcache.dll
    

    Вы также можете сделать это:

    opcache.enabled=0
    
  • Выключение APC вы можете прокомментировать строки, а также (если это Unix-like):

    ;extension=apc.so
    

    , Если для Windows:

    ;extension=php_apc.dll
    

    Вы также можете сделать это:

    apc.enabled=0
    
  • Выключение Xcache вы можете прокомментировать строки таким образом (если это Unix-like):

    ;extension=xcache.so
    

    , Если для Windows:

    ;extension=php_xcache.dll
    
  1. Примечание: HHVM уже имеет собственный JIT
  2. Примечание: составители код несмотря на то занять несколько секунд, чтобы очистить кэш"," версии ", составлен" да, это все еще здорово в производственной среде, если обновление файлового сервера, скорее всего, придется перезапустить для обновления, затронуты сразу.
 9
Author: Guilherme Nascimento, 2018-01-05 14:10:05