Поиск

Как ускорить PHP скрипты Категория: PHP
Название: Как ускорить PHP скрипты
Дата добавления: 2012-04-11
Раз просмотрено: 18
Комментарии: 0
Рейтинг: ··········(0 голосов)

Как ускорить PHP скрипты

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

Вычисление скорости работы скрипта

Для начала, нам необходимо измерить время выполнения нашего скрипта. Благодаря оптимизации, вы сэкономите время его работы, но, в большинстве случаев, это будут небольшие изменения (т.к как вы являетесь единственным пользователем на локальном сайте и очень ресурсоемкие скрипты довольно редки). Таким образом, замерить изменения «на глаз» не представляется возможным.

Для измерения времени выполнения скрипта вам понадобится пару строчек кода, которые вы вставите в самом начале и конце вашей PHP страницы:

$start_time = microtime(TRUE);

// Далее идет ваш скрипт, разметка и т.д.

echo 'Время выполнения скрипта: ' . round((microtime(TRUE) - $start_time), 4) . ' секунд.';

Обычно время выполнения скрипта будет исчисляться сотыми долями секунды. Ну теперь, когда мы сможем увидеть результаты нашей оптимизации скрипта, мы можем приступить непосредственно к ней. Рассмотрим основные методы ускорения PHP скриптов.

Используйте одинарные кавычки

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

echo "За $time секунд было найдено $num совпадений в базе данных $base.";

Лучше записать так:

echo 'За ' . $time . ' секунд было найдено ' . $num . ' совпадений в базе данных ' . $base . '.';

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

Не используйте лишних переменных

Если что-то у вас в скрипте не используется чаще одного раза, для этого не стоит заводить отдельную переменную. Не оптимизированный скрипт выглядит так:

$content = 'Какой-то текст.';
echo $content;

Лучше поступать так:

echo 'Какой-то текст.';

Не используйте длинные имена переменных

Если длина названий ваших переменных будет короче 7 символов, вы можете сэкономить до 20% скорости работы вашего скрипта. Вот пример излишне длинных переменных:

$windows_xp_edition = 'Professional';
$windows_xp_build = '2600';

Сократим наши переменные:

$wx_edit = 'Professional';
$wx_bld = '2600';

Используйте встроенные функции

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

$string = str_replace('&','&',$string);
$string = str_replace('"','"',$string);
$string = str_replace('<','&lt;',$string);
$string = str_replace('>','&gt;',$string);

echo $string;

А ведь готовое решение очень просто:

echo htmlspecialchars($string);

И еще один пример. Вместо открытия файла функцией fopen() и чтения его содержимого в массив:

$file = fopen('database.txt','r');
while($array[] = fgets($file, 1024));
fclose($file);

Лучше воспользоваться одной простой функцией file():

file('database.txt');

Группируйте функции

Вместо такого решения:

$string = str_replace("\n", ' ', $string);
$string = str_replace("\r", ' ', $string);
$string = trim($string);
$string = stripslashes($string);
$string = substr($string, 0, 1024);
echo $string;

Лучше использовать это решение (пусть и не такое эстетичное):

echo substr(stripslashes(trim(str_replace("\r", ' ', str_replace("\n", ' ' ,$string)))), 0, 1024);

Пишите собственные функции

Очень часто вам понадобится решать одинаковые задачи и выполнять одинаковые алгоритмы в разных местах скрипта или на разных страницах. Для этого оптимальным решением будет написать собственную функцию, выполняющую эти действия.

Неудачный пример решения:

echo htmlspecialchars(chop(stripslashes(trim($string))));

echo htmlspecialchars(chop(stripslashes(trim($string))));

Оптимизированное и профессиональное решение:

function format($string) {
        return htmlspecialchars(chop(stripslashes(trim($string))));
}

echo format($string);

echo format($string);

Не используйте лишних операторов вывода. Вместо такого варианта:

echo 'Таблиц: 3.<br />';
echo 'Записей: 41.<br />';

Лучше писать так:

echo 'Таблиц: 3.<br />' .
     'Записей: 41.<br />';

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

Понравился материал? Расскажи о нем всем:
Оцените эту статью:
Прокомментируйте:
Ваше имя:

Ваш комментарий будет первым.