Внимание Акция! Следите за новостями на нашем сайте, отвечайте на вопросы и получите гарантированную скидку в 5% на все наши услуги. Посмотрите более подробную информацию о этой акции.

Проверить домен:

Вход для клиентов:


Статьи / Немножечко PHP

Несколько советов по ускорению работы php скриптов.

В этой статье мы рассмотрим несколько приемов позволяющих несколько увеличить скорость исполнения php скриптов. Эти способы позволят избежать чрезмерных нагрузок на сервер хостинга и увеличить производительность Ваших веб-приложений.

Использование кавычек.

Разработчикам на php известно, что строки можно объявлять как в одинарных, так и в двойных кавычках, для php это не имеет значения, но в то же время между окинарными и двойными кавычками есть разница. Если строка объявлена в одинарных кавычках, то php воспринимает ее "как есть", если же в двойных, по пытается пропарсить и выявить наличие спецсимволов, таких как, например, "\n", "\t", "\r" и других, а также переменных и выполнить с ними конкатенацию. Не сложно догадаться, что на парсинг строки уходит время. Поэтому, если Вы не используете в строке какие-либо спецсимволы или переменные, то лучше объявлять ее в одинарных кавычках, это несколько ускорит работу скриптов и уменьшит нагрузку на хостинг. Приведем небольшой пример работы со строками.

<?php
// объявим простую строку
$sample_string 'Hello world';

// Отформатируем ее, заметьте, операция конкатенации работает быстрее, 
// чем вставка переменных в строку
$formatted_str '<h1>' $sample_string '</h1>' "\n";

// А такая конструкция работает намного медленее:
$formatted_str "<h1>{$sample_string}</h1>\n";
?>

Работа с массивами.

Самым быстрым обходом массива является конструкция foreach. Если же Вам по какой-то причине нужно использовать цикл for то старайтесь не включать какие-либо функции в тело условия цикла, лучше вынести их за пределы цикла. Также старайтесь избегать рекурсий там где без них можно обойтись, это даст довольно большой прирост в производительности. Кроме этого в php есть array_* функции которые работают намного быстрее циклов. Рассмотрим несколько примеров:

<?php
// Зарегистрируем константу конца строки, это тоже немного ускорит скрипт :)
define('NL'"\n");
// стандартный цикл foreach, наиболее быстрый обход массива
$fruits = array("d" => "lemon""a" => "orange""b" => "banana""c" => "apple");
// распечатаем массив $fruits в виде списка с описанием:
foreach ($fruits as $idx=>$name) {
    echo 
$idx '. fruit:' $name NL;
}

// то же самое можно сделать c использование cfllback функций:
function print_fruit(&$item$key) {
    echo 
$key '. fruit:' $item NL;
}
array_walk($fruits' print_fruit');

// пример работы c циклом for
$fruits = array("lemon""orange""banana""apple");

// этот пример работает намного медленее
for ($i=0$i<count($fruits); $i++) {
    echo 
$fruits[$i] . NL;
}

// а этот быстрее
$count count($fruits);
for (
$i=0$i<$count$i++) {
    echo 
$fruits[$i] . NL;
}
?>

Еще несколько советов.

Самые медленные места в программах

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

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

И на последок.

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