Оптимизация ч.2

Используйте одинарные кавычки вместо двойных
Дело в том, что текст, заключенный в двойные кавычки сканируется процессором на наличие в нем переменных, а также мнемонических подстановок (например, \n для вставки в текст символа новой строки).

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

print('PHP-процессор сильно обрадуется, увидев строку, заключенную в одинарные кавычки. А как тут не обрадоваться — ведь не нужно делать бесполезную работу!');
Естественно, строки такого вида можно использовать не только в функциях, но и в переменных.

$string='Какое счастье не парсить лишний раз эту строку!';
Не заключайте переменные в кавычки
Очень часто приходиться видеть подобную картину.

print("PHP-процессору пришлось обрабатывать эту страницу $time секунд.");
Усвоя мой предыдущий совет, и зная, что PHP-интерпретатору намного легче "склеивать" строки, чем сканировать их на наличие переменных и заменять их на соответствующие этим переменным строки, нетрудно догадаться, что мой предыдущий пример — пример неэффективного использования ресурсов сервера. А теперь порадуем сервер оптимизированным скриптом.

print('PHP-процессор, радуясь жизни, обработал этот скрипт за '.$time.' секунд.');
Для тех, кто в танке: склейка строк производится с помощью точки (.), то есть

print('Адрес этого сайта — http://'.$_SERVER['HTTP_HOST'].'/!');
выведет текст «Адрес этого сайта — http://argon.com.ru/!»

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

$content='Здесь, например, может быть текст статьи, килобайт эдак на 8… Хороши хоть в одинарные кавычки заключить догадались'; print($content);
Спрашивается, а нахрена занимать лишнюю память, попусту нагружая сервер?.. Намного эффективней сделать так.

print('PHP-процессору доставляет одно удовольствие выводить такие строки.');
Так что, если какая-то строка используется меньше двух раз, присваивать переменной значение этой строки вредно.

Используйте короткие имена переменных
Если в скрипте используются переменные с неоправданно длинными именами, нагрузка на сервер, естественно возрастает.

$windows_xp_edition='Professional';
$windows_xp_build='2600';
$windows_server2003_edition='Standard';
$windows_server2003_build='3200';
Но и слишком лаконичные имена давать тоже не стоит — в будущем при правке скрипта внушительных размеров сто раз вспомнишь мать его создателя, причем не ласковым словом :)

$ifa='Professional';
$ifb='2600';
$ifc='Standard';
Sifd='3200';
Оптимальный же вариант — давать лаконичные, но понятные имена, не превышающие восьми символов.

$wxped='Professional';
$wxpbld='2600';
$ws2k3ed='Standard';
Sws2k3bld='3200';
Используйте вложенные функции
Очень часто приходиться видеть такое дело.

$string=str_replace("\n",' ',$string);
$string=str_replace("\r",' ',$string);
$string=trim($string);
$string=stripslashes($string);
$string=chop($string);
$string=substr($string,0,1024);
print($string);
Такой код, конечно, очень легко читать и править… Но может быть пожертвовать читаемостью воимя заметного прироста производительности?

print(substr(chop(stripslashes(trim(str_replace("\r",' ',str_replace("\n",' ',$string))))),0,1024));
Согласен, выглядит это ужасающе, зато наблюдается ощутимый прирост производительности! Сделать такую штуку очень просто, если начинать с конца, подставляя каждый раз вместо переменной соответствующее ей значение…

Используйте встроенные функции
Приведу простой пример скрипта, заменяющего все специальные символы HTML на соответствующие им мнемонические подстановки.

$string=str_replace('&','&',$string);
$string=str_replace('"','"',$string);
$string=str_replace('<','<',$string);
$string=str_replace('>'','>',$string);
print($string);
Этого же самого можно добиться, если использовать такой код.

print(htmlspecialchars($string));
И выглядит поприятнее, и весит меньше и заметно снижает нагрузку на сервер, особенно при обработке длинных строк.

Еще один пример. С помощью этого скрипта можно прочитать содержимое какого-нибудь текстового файла в массив.

$fp=fopen('database.txt','r');
while($array[]=fgets($fp,1024));
fclose($fp);
Но PHP имеет жутко полезную встроенную функцию file(), которая выполняет абсолютно то же самое, но намного быстрее!

file('database.txt');
Вывод: никогда не ленитесь лишний раз заглянуть в справочник функций PHP. Уверен, что вы там найдете множество средств, облегчающих вашу (и сервера) жизнь.