Каким бы большим и сложным ни был ваш программный проект, вы сможете сделать его более мощным и совершенным, прочитав это подробное руководство по PHP 5, написанное Энди Гутмансом, одним из разработчиков PHP, Стигом Баккеном, создателем PEAR, и Дериком Ретансом, лидером группы тестирования PHP. Авторы делятся своими уникальными знаниями и предлагают множество реалистичных примеров. Вы познакомитесь с особенностями новой объектной модели PHP 5, шаблонами проектирования, улучшенной поддержкой XML и веб-сервисов.
Он состоит из достаточно простых Опера. Затем, Пе ред выполнением инкремента, это значение переписывается Ба вре менную переменную Т. В нашем случае оптимизатор выяснит, что результат постинкрементной операции не нужен и заменит постин крементную операцию на преинкрементную. Все происходит в памяти и затра. Са мый большой недостаток автоматической оптимизации в том, что она не может дать большой прирост в скорости выполнения. По этой причине автО матическая оптимизация может рассматриваться лишь как дополни тельная мера, применяемая совместно с дру. В предыдущем разделе мы уже показали, как интерпретатоР за. То есть с промежуточным кодом ниче. В сле дующий раз, ко. Та кой подход имеет ряд преимуществ бла. Однако если РНР лежит в основе популярно. Чтобы исключить повторную компиляцию кода, . При обращении к сценарию в самый первый раз производится . Важно пони мать, что . Это означает, что однажды . Обычно кэширование скомпилированно. Для приложений, при исполнении которых время тратится в основном на ожидание завершения операций . Фактически каждый файл оптимизируется один раз, а затем . Значения по умолчанию прекрасно подходят для большинства случа ев. Однако можно попробовать несколько увеличить объем памяти, выделяемой под кэш, или максимальное число кэшируемых файлов. Выполнить эти настройки поможет . Динамическое кэширование страниц Динамическое . В самом простом случае под КЭ. Такой вид кэширования может дать до . динамическое кэширование страниц. Вообразите себе новостной сайТ, например, сп. Действительно ли так необходимо конструироватЬ эту страницу из базы данных всякий раз, ко. Прежде чем воспользоваться преимуществами кэширования страниц, необходимо. Вопрос выявления страниц, содержимое которых может быть помеще но в кэш, на самом деле не так проет как кажется. Однако если содержимое страницы зависит от . Таким образом, решение вопроса о при. только он знаком с внутренней архитектурой приложения. Тем менее существуют несколько основопола. Однако это очень нечеткое правило, ведь если количество пользователей невелико, а обращения каждо. После выявления страниц. Время жизни стра ницы это максимально возможный промежуток времени, в тече ние . Например, вполне очевидно, что обращение к странице . В таких случаях по. Например, если какая то часть страницы отображает персональные данные одно. Таких пользователей бывает достаточНО . В этом случае можно попробовать прибе. рования в том, что этот метод применяется только для отображениЯ страниц с настройками по умолчанию. Обнаружив, что пользователЬ заре. Этот метод применим к . В отличие от дру. Поскольку сжатие это достаточно доро. Это позволяет сжимать только те страницы, которые помещаются в кэш . Тест на сжатие в . Производительн ость му можно не сжимать страницы по каждому запросу и ВОСПОЛЬЗОватъ. ся преимуществами обоих методов, не увеличивая на. Оптимизация кода в этом разделе мы рассмотрим различные способы оптимизации КОДа, включая микротесты производительности, подмену части кода РНР кодом, написанным на языке С, и сравнение процедурно. Микротесты Очень часто возникает вопрос, какой из двух походов обеспечивает большую скорость. Например, какая функция быстрее выполнит заМе ну подстроки в строке. Ниже приводится библиотечный сценарий . Точность измерения зависит от настроек системы, но обычно один такт системных часов равен . Х эту величину можно изменить при конфи. Ниже приводится исходный код микротеста, сравнивающий произво дительность функций . Если в операции вовлека ется ввод. В противном случае можНО принять неверное решение только изза . Совет Не уничтожайте микротесты. Переписывание кода РНР на языке С Ино. В этом случае надо рас смотреть возможность разбиения сценария на части и переписать от дельные участки . ДЛЯ тех, кто имеет опыт про. Примеры разработки расширений РНР приводятся в следующей . Можно придерживаться исключительно процедурно. А можно написать приложение исключительно в объектно. С точки зрения производительности, процедурный код работает . Это хорошо видно из сле дующе. Имейте в виду, что выи. тельно различиями в способе обращения к функциям и методам . Эту разницу стоит учитывать, если сценарий содержит . ложен ий настолько обширна, что для полно. валось бы написать отдельную кни. вия, доступных в РНР . Мы показали, что проблема производительности насущна не тольКО для больших сайтов. Необходимо запомнить два ключевых момента, обеспечивающих высокую производительность и эле. Самое крупное достижение РНР относится к третьей . Существуют две основные причины, толкающие про. Первая обусловлена необходимостью добавить в РНР поддержку тех новых техноло. Как правило, решение этой задачи заключ. Допустим, на рынке появилась новая СУБД . Введение в разработку расширени й РНр расширение РНР, которое будет использовать библиотеку . Если обе эти причины не имеют к вам отношения, можете смело . Далее мы расскажем, как писать относительно простые расширени. Самый простой способ освоить тот или иной предмет ПРо . Освоив азы написания расширений, вы Ле. В основе примеров этой . Те, кто работает под . Тем не менее все описания, касающиеся прикладно. Начало Вместо длительных и подробных объяснений отдельных блоков, СО. Для начала представим себе, что нам нужна функция, которая будет выводить строку некоторое количество раз. На языке РНР такая ФУВ. Итак, первый ша. В нашем примере этот файл будет состоять . Опи сывая функции, можно указывать необязательные . Сохраните этот файл под именем . Теперь создадим за. Допустим, что определения функций находятся в файле . Скомпилировать расширение РНР мол. Создание расширений в виде динамически за. Перед компиляцией надо отредактиро . Введение в разработку расширений Р Нр . Наше расширение не являетс. Это можно сделать, раскомментировав следующие две строки. Про верить тот факт, что теперь сценарий .