Данный метод не подойдет для обычного хостинга, где хостер предлагает свою версию php. Данный метод не подойдет тем, кто ботся коммандной строки.
Основные требования:
Ну а пока выполняется комманда apt (yum) или устанавливается студия в windows, копнем в теорию.
Так, как php является интерпретируемым языком, php программа представляет из себя набор файлов (или один файл). Во время выполнения интерпритатор считывает содержимое файла и выполняет описанные в нем инструкции. Собственно во время выполнения скрипта и возникает нагрузка на сервер и данная нагрузка зависит от прямизны рук программистов и от сложности самого проекта. О способах поиска узких мест в скриптах я уже писал, а сейчас я хочу поговорить о самом интерпретаторе.
Далее я буду описывать процесс под *nix системами. Сборка в windows аналогична, за исключением студии.
Сборка мало чем отличается от сборки любой другой программы:
./configure
make
make install
Причем первой команде можно передать кучу параметров для сборки: укзать пути, включить режим отладки и т.д. с полным списком параметров можно ознакомиться на сайте php.
Но и у второй команды (make) есть ряд параметров: различные BINDIR, CFLAGS и т.д. В частности есть очень интересный параметр prof-gen. Вызов с данной коммандой будет таким:
./configure
make prof-gen
make install
Данная сборка выдаст больший по обьему бинарный файл и работать он будет медленнее, чем обычная сборка PHP. Но шаг к тормознутости небходим т.к. в этом режиме включаются режими записи логов для компилятора. На данном шаге необходимо запустить веб приложение и максимально использовать его возможности, протестировать основные узлы. Особое внимание надо уделить:
После того, как мы поработали с приложением, а сборка php собрала необходимую статистику по его работе, можно приступать к следующиму шагу.
Все волшебство заключается в очередном параметре make:
make prof-use
make install
Теперь пересобранный бинарник будет весить столько же, сколько и при обычной сборке (возможно меньше), но скорость работы для конкретного приложения должна возрасти. В Данном методе использовалась Profile-guided optimization (PGO) — техника оптимизации программы компилятором. Данная техника анализирует использование приложения и соответствующим образом оптимизирует бинарник. Вот далеко не полный список того, что делает данная техника:
Полный список того, что делает данный метод, можно найти тут.
Данный метод не даст результатов при использовании на сервере зоопарка CMS, но если в продакшене держать одно конкретно взятое приложение, то можно добиться очень хороших результатов. Например wordpress в стал на 17,4% быстрее обрабатывать стр