PHP ускорители и статические поля - PullRequest
3 голосов
/ 03 марта 2010

Я хотел бы знать о представлении статических (классовых) полей в интерпретаторе PHP.

Например, когда вы загружаете класс в Java, статические поля будут связаны с этим объектом класса; это означает, что два приложения, выполняющие одну и ту же JVM (и один и тот же загрузчик классов), будут иметь некоторую общую глобальную переменную;)

Мне просто интересно, если я использую какое-то ускорение PHP / кэширование кода операции, что это на самом деле кэшируется? Это просто скомпилированный байт-код или фрагмент состояния виртуальной машины (ответственный за хранение объектов класса)?

Это потому, что я боюсь совместного использования статических полей / одноэлементных объектов между запросами и т. Д.

P.S .: Я действительно новичок в PHP, поэтому мне очень жаль, если вопрос слишком тупой:)

1 Ответ

4 голосов
/ 03 марта 2010

Кэш кода операции ничего не изменит: каждый скрипт PHP выполняется своим собственным процессом (или потоком) , изолированным от других.

Кэш кода операции будет кэшировать только коды операции (PHP-эквивалент байт-кода JAVA) и не будет хранить и не иметь отношения к текущему выполнению сценария - то есть не будет " VM" состояние ».

Это означает, что ваши static переменные будут существовать в одной версии для каждого выполнения вашего сценария PHP, даже если этот сценарий выполняется несколько раз параллельно; и использование или отсутствие кэша кода операции ничего не изменит.

...