Повышение Производительности.

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

Профиль на сервере.

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

Профилирование с XDebug

XDebug обеспечивает более простой способ профилирования PHP-приложений, просто установите расширение и включите профилирование в php.ini:

xdebug.profiler_enable = On

Используя такой инструмент, как Webgrind, вы можете увидеть, какие функции/методы медленнее других:

Профилирование с Xhprof

Xhprof еще одно интересное расширение для профилирования PHP-приложений. Добавьте следующую строку в начало файла начальной загрузки:

<?php

xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

Затем в конце файла сохраните профилированные данные:

<?php

$xhprof_data = xhprof_disable('/tmp');

$XHPROF_ROOT = '/var/www/xhprof/';
include_once $XHPROF_ROOT . '/xhprof_lib/utils/xhprof_lib.php';
include_once $XHPROF_ROOT . '/xhprof_lib/utils/xhprof_runs.php';

$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, 'xhprof_testing');

echo "http://localhost/xhprof/xhprof_html/index.php?run={$run_id}&source=xhprof_testing\n";

Xhprof предоставляет встроенный просмотрщик HTML для анализа профилированных данных:

Профилирование SQL-операторов.

Большинство систем баз данных предоставляют средства для определения медленных операторов SQL. Обнаружение и исправление медленных запросов очень важно для повышения производительности на стороне сервера. В случае Mysql можно использовать медленный журнал запросов, чтобы знать, какие запросы SQL занимают больше времени, чем ожидалось:

log-slow-queries = /var/log/slow-queries.log
long_query_time = 1.5

Профилирование на стороне клиента.

Иногда нам может потребоваться улучшить загрузку статических элементов, таких как изображения, javascript и css для повышения производительности. Следующие инструменты полезно для выявления узких мест на стороне клиента:

Профилирование с Chrome / Firefox.

Большинство современных браузеров имеют инструменты для профилирования времени загрузки страницы. В Chrome вы можете использовать веб-инспектор, чтобы узнать, сколько времени занимает загрузка различных ресурсов требуется на одной странице:

Firebug предоставляет аналогичную функциональность:

Yahoo! YSlow.

YSlow анализирует веб-страницы и предлагает способы повышения их производительности на основе набора правил для высокопроизводительных веб-страниц

Профиль с Трассировщиком скорости.

Speed Tracer -это инструмент, помогающий выявлять и устранять проблемы с производительностью в веб-приложениях. Он визуализирует метрики, взятые из точек инструментирования низкого уровня в браузере, и анализирует их по мере выполнения приложения. Speed Tracer доступен в виде расширения Chrome и работает на всех платформах, где в настоящее время поддерживаются расширения (Windows и Linux).

Этот инструмент очень полезен, потому что он поможет вам получить реальное время, используемое для отображения всей страницы, включая анализ HTML, оценку Javascript и CSS-стиль.

Используйте последнюю версию PHP.

PHP работает быстрее с каждым днем, использование последней версии повышает производительность ваших приложений, а также Phalcon.

 

Используйте кэш байт-кода PHP.

APC как и многие другие байт-кэши, они помогают приложению сократить издержки чтения, разметки и разбора PHP-файлов в каждом запросе. После установки расширения используйте следующую настройку для включения APC:

apc.enabled = On

Сделайте блокирующую работу в фоновом режиме.

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

Скорость Страницы Google.

mod_pagespeed ускоряет работу сайта и сокращает время загрузки страниц. Этот модуль HTTP сервера Apache с открытым исходным кодом (также доступен для nginx как ngx_pagespeed) автоматически применяет рекомендации по производительности веб-страниц и связанных ресурсов (CSS, JavaScript, изображения) без необходимости изменения существующего содержимого или рабочего процесса.