Ускорение Кэширования/Зенда Кода операции PHP и include_once по сравнению с require_once

Итак, наконец я нашел решение для исправления этой проблемы!

Просто установите системные свойства в java2d в вашем статическом методе main, написав этот код:

public static void main(String argsp[]) {
    System.setProperty("sun.java2d.opengl", "true");
    new Game();
}
6
задан Alan Storm 4 January 2012 в 20:24
поделиться

2 ответа

Для начала, оба вызова (require_once и include_once) перепроверяют, если файл не был включен прежде.

Таким образом, способ, которым они оба достигают этого, путем поиска файла во всех доступных путях и путем важной проверки, не было ли это в соединении прежде и т.д.

В фоновом режиме то, что происходит, - то, что они оценивают все различные варианты (например, несколько include_path, и т.д.) и затем путем создания realpath из этой формы abreviated, они создают уникальный идентификатор. Существует только один и тот же путь - не два.

Это уже - не самый быстрый процесс на планете и обычно происходит по каждому запросу с PHP. Затем добавьте другую дорогую операцию, которая является статистикой, когда она создает то, что я назвал realpath (realpath, потому что это - вид того, что realpath () делает) проверять, существует ли файл.

Исправьте меня, если я неправ, но APC имеет оптимизацию специально для этого случая.

Так так или иначе - теперь на различии между require_once и include_once, который является, что require_once оценивает файл (для ошибок анализа низкого уровня, и т.д.), когда это включает его. Это - дополнительная проверка, которая можно избавиться от того, если у Вас есть достаточно QA на месте, который ошибка анализа никогда не может стащить во включение.

Это просто хитро для нахождения иначе.:-)

(Что-то для рассмотрения: Вы могли разработать с require_once и заменить все вызовы include_once, когда Вы развертываетесь.)

Что касается кэша кода операции - я рекомендовал бы APC. Это было обсуждено на stackoverflow прежде. Лично, я/мы, используют его некоторое время (мы обрабатываем примерно 100k посетителей/день с 3 frontends и 1 бэкендом), и мы очень счастливы. APC также оптимизирован для require_once/include_once безумия.

Довольно прохладный побочный эффект состоит в том, что APC также позволяет Вам хранить переменные PHP в памяти - вид персистентных и т.д.

Пара дополнительных указателей:

  1. Много людей утверждает, что ускорило любое приложение с __ автозагрузка.
  2. С кэшем кода операции избегайте условного выражения require_once/include_once (например, в циклах или в потоке управления).
  3. Некоторые люди говорят, что/absolute/path/to/file.php в include_ или require_once быстрее, чем доверие include_path.
  4. Порядок путей в Вашем include_path имеет значение также.

Надежда, которая помогает.

12
ответ дан 9 December 2019 в 20:51
поделиться

Я не могу guarantuee ничто, поскольку я глубоко достаточно не изучил его, но да, я видел различия в скорости между двумя. Они никогда не были достаточно значительными мне для перемещения в include_once вместо require_once все же.

Я всегда предполагал, что различие было то, потому что require_once должен сделать больше работы под водой. по крайней мере еще одна потенциальная ошибка подготовиться к и дескриптор и намного больше сделать, когда требуемый файл не существует.

0
ответ дан 9 December 2019 в 20:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: