Показаны сообщения с ярлыком APC. Показать все сообщения
Показаны сообщения с ярлыком APC. Показать все сообщения

суббота, 21 июля 2012 г.

Autoload, APC, Стабилизация PHP-5.4

Ведущий мантейнер dev-lang/php пишет php-5-4-about-to-be-stabilised в своем блоге о стабилизации в дереве портов пакета версии PHP-5.4.
Одна из причин, почему это не происходит: задержки в выходе «кэшера» APC для PHP-5.4, довольно востребованного расширения. Расширение еще не стабилизировано для этой версии PHP и неизвестно хотя-бы приблизительно, когда будет релиз. Пока автор рекомендует пользоваться XCache. Примерно такая-же ситуация с наборами патчей безопасности Suhosin

На мой взгляд, APC действительно востребован. Фактически это хорошая opensource-замена многим продуктам zend.com, zend guard, zend encoder, ioncube и им подобных. На страничке данного расширения можно видеть, что последние версии вышли довольно недавно, но в статусе бетты. Последний стабильный релиз был в середине мая 2011 года. Среди разработчиков расширения, можно заметить Расмуса и других хорошо известных личностей. Это обнадеживает, что скоро стабилизация APC произойдет. Просто разработчики скорее всего были заняты доводкой PHP-5.4 весь период 2011-2012 гг.
Причем судя по коммитам в http://svn.php.net/viewvc/pecl/apc/trunk/ (странно однако, почему они сидят на древнем svn-не, а не на git-е), Расмус ведет самое активное участие в доводке APC. Читайте статью Расмуса про кеширование и ускорение php-приложений и вообще http://talks.php.net/show/w2e09

APC и другие «кэшеры» не решают архитектурные проблемы приложения. Для ускорения работы php-приложений без APC можно использовать следующий подход (паттерн). Первый оператор Вашего приложения это include 'autoload.php' в index.php. В autoload.php Вы объявляете лучше статичный класс примерно так


Еще одно немаловажно правило. Теперь все запросы на поиск файла в котором содержится искомый класс, будут приходить сначала сюда... Поэтому рекомендуется убрать везде, где можно в проекте include*, require* и добавить все классы проекта, которые планируется использовать. Несколько классов содержащихся в одном файле нужно добавить явно, как будто они находятся в разных файлах.

Данный пример подходит для небольших проектов и библиотек с небольшим числом классов. Для более удобного применения, необходимо добавить метод что-то типа Autoload::provideClasses(...)

PHP, gentoo, portage, tree, blog, APC, Xcache, production, dev-lang/php, Suhosin, PHP-5.4., 5.4, 5.3+, patch, security, development, stable, stabilisation, пакет, стабилизация, безопасность, cache, кэш, ebuild, extension, pecl, расширение, class, autoload, spl, spl_autoload_register, debug, namespace, path, include, require, example, solution, performance, Rasmus, pattern, zend, encode, ioncube, zend guard, alternative, encoder, code




воскресенье, 20 сентября 2009 г.

Установка PHP 5.3 на Gentoo Linux

ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ!
статья устарела и может быть полезна только в познавательных целях или для очень давно не обновляемых серверов с генту.
Сейчас 53 достаточно стабилен и установка достаточно тривиальна.
Смотрите руководства по установке/обновлению php на сайте gentoo.org
Статьи на сайтах gentoo-wiki также выглядят устаревшими. Лично мое мнение: надо использовать в полный рост PHP 5.4 и готовиться к PHP 5.5+
===============================================


Сабж, собственно практически ничем не отличается от установок предыдущих версий ниже 5.3 Хотя, безусловно есть нюансы. Возможно, в других дистрибутивах линукса это не так, но в Генту все довольно круто :)

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

Подготовка


Для установки Вам потребуется:


  • убежденность, что свежий PHP 5.3 это есть гут :)

  • терпение и внимательность

  • ebuild PHP 5.3 Если, Вы никогда не устанавливали ebuild(s), то советую Вам почитать соответствующие мануалы. Иначе ничего не получится. Все дело в том, что это неофициальный ebuild т.е. он "нормальный" :), но его еще пока нет в официальном дереве портов Генту. Вы не можете сделать просто:
    emerge --sync && emerge -avDuN php

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

  • будьте готовы к тому, что после обновления, Ваши скрипты с вызовами вида:
    doMyFunc(& $args);
    будут приводить к предупреждениям интерпретатора. Для совместимости можно отключить эти сообщения в конфигах php.ini Некоторые приложения будут несомненно глючить или вообще не будут работать. Для справки: достаточно свежий phpbb прекрасно справился с 5.3, но бекапы в основном к БД сделать предварительно не помешает

  • Перед установкой рекомендуется обновить pear, pecl и удалить лишние расширения. Для чистоты установки лучше предварительно деинсталлировать все pecl-расширения. Некоторые из-них не будут нормально работать или вообще откажут в сборке. Про другие, Генту уведомит ненавязчиво... Возможный список проблемных расширений: python, xdebug, APC...

    Насчет последнего - отдельная тема... Он устанавливается из последних версий бета, и даже работает, но пока миграция не закончена, лучше отключить нафиг... С xdebug примерно тоже самое.


О настройках ключей компиляции


(необязательно, но рекомендуется):
sudo nano -w /etc/portage/package.use


и добавить или обновить строчку (привожу мои ключи):
dev-lang/php sharedext pcntl apache2 pdo postgres tidy bzip2 tokenizer ctype curl memcache oci8-instant-client hash sqlite

Сборка пакета


Если все сделали правильно, то по команде
emerge -vDuNp php
увидим готовность Генту установить PHP 5.3. Еще раз проверяем все и "емерджим" новый PHP...

Завершение


-по завершении установки не забываем про новые конфиги:
dispatch-conf
Очень внимательно и самое главное честно прописываем timezone в конфигах иначе возможны пляски с бубном... Делаем apache2 restart и наконец приступаем радостно к работе с новой версией.

Продолжение следует...


В ближайших постах расскажу о новых возможностях 5.3 в плане быстрой и удобной автозагрузки модулей классов и реального применения пхп-пэкэджей с нейм-спейсами, SPL и многое другое... Хотя некоторые возможности есть и у ветки 5.2, но по настоящему с ними работать приятнее конечно в новой версии. Всем удачи!

Полезные ссылки


Установка и разработка ebuild
О ebuild на русском
Зачем нужен eclass