воскресенье, 31 октября 2010 г.

Поведение php-5.3.3 и sqlite, sqlite2, sqlite3, pdo в gentoo

Есть статья посвященная этой теме. Смысл в том, что надо использовать USE-флаг sqlite3 для предотвращения возможных проблем со старыми драйверами pdo-sqlite. Новый PDO работает теперь только с sqlite3.

Просто сделайте USE="-sqlite sqlite3" emerge -v php. После, чтобы увидеть эффект этого, просто выполните emerge --depclean -av и увидите, что sqlite2 будет выкинут из системы. Если вы установите php без корректировки USE-флагов sqlite sqlite3, то получите обе работающих библиотеки. В дальнейшем такая конфигурация будет сопровождаться генерацией нотиса в php при работе приложения.

На мой взгляд имеет смысл отказаться заблаговременно от использования старых версий sqlite. И по возможности использовать только sqlite3. Но реально воспользоваться этой возможностью можно только перейдя на php53.

Новый sqlite3 поддерживает юникод (UTF-8), что отражается на корректной сортировке данных. Версии sqlite ниже <3 br="">
В общем для решения этих проблем просто установите генту с последними версиями sqlite и пхп...

;)

ключевые слова:
драйвер, сортировка, юникод, установка, генту, sql, sqlite, sqlite3, data, php, php53, php5.3, portage, gentoo, ebuild, emerge, pdo, unicode, utf

upd 2013:
warning: this article actual for old gentoo versions - latest builds may work not such

внимание: данная статья актуальна для очень старых сборок - последние версии gentoo могут иметь другое поведение с этими флагами. Наблюдалось не очень логичное поведение portage - пришлось несколько раз пересобирать, возможно это просто мешали старые флаги или не поддерживаемые пакеты. 

upd 2013:
warning for advertisers: if you want place backlink here or something other please contact me or/and use donate button.

dev-lang/php-5.3.3-r1 наконец-то стал стабильным для всех веток arch!

Об этом замечательном событии сообщает Ole Markus в своем блоге. Этот пакет в gentoo теперь поддерживает многие фичи в стабильной ветке: FPM (FastCGI Process Manager) и другие .

А другие фичи это в основном особенности новшеств языка давно известные (LSB (Late Static Binding), Closures, Тернарный оператор с "умолчательным" значением). Например фрагмент кода:

return 'gentoo is cool' ?: 'who wants to read this, anyway?';
вернет "gentoo is cool", потому-что ненулевая длина строки 'gentoo is cool' вычисляется как true с точке зрения приведения к boolean-значению.

Новые и удобные функции работы с датами (date_add(), date_diff() and date_sub()) и многое другое.
Конечно-же эти фичи просто возможности языка,а не возможности сборки пакетов, но то что позволяет делать генту при сборке пакетов было бы не возможно без системы portage и ebuilds для php.

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

В блоге Маркуса также есть интересные статьи решающие различные задачи установки для PHP и PHP53. В частности приводится техника установки нескольких различных версий PHP на один сервер. Новая концепция установки pecl-расширений через слоты

Спасибо всем тестерам и командам arch-веток, кто сделал это возможным, пишет Ole Markus.