DOMDocument::loadXML - кодировка UTF-8 для XML

Запись опубликована (PHP) от Igor в 06-08-2008 18:49

Сегодня столкнулся с одним неприятным багом PHP при работе с XML с кодировкой UTF-8. Если воспользоваться функцией DOMDocument::loadXML.

Читать дальше…

Методы сортировки на php от Gustav Eklundh

Запись опубликована (PHP) от Igor в 01-08-2008 23:54

Gustav Eklundh разместил на своем блоге серию статей о методах сортировки.

Он кратко объясняет каждый из методов сортировки. Плюс указывает ссылки на материалы, где можно подробнее почитать про сортировку.

Quicksort
Gnome sort
Strand sort
Merge sort

CodeIgniter: создание PDF файлов

Запись опубликована (PHP) от Igor в 01-08-2008 23:43

На сайте framework CodeIgniter выложили статью о создании pdf файлов.

Прочитать статью на анг. языке: CodeIgniter Community Voice - Generating PDF files using CodeIgniter

memcache.php - веб-интерфейс для сервера memcached

Запись опубликована (PHP) от Igor в 31-07-2008 23:55

Есть интересная разработка memcache.php - это веб-интерфейс для сервера memcached, сделан по аналогии интерфейса apc.php.

Скачать исходный код memcache.php.

Недавно его обновили - теперь можно удалять ключи.

Почитать про сервер memcached на википедии.

Архитектура Zend Framework

Запись опубликована (Zend Framework) от Igor в 28-07-2008 15:40

Ознакомиться с информацией об архитектуре фреймворка Zend Framework можно тут. Информация на английском языке. Кроме описания архитектуры, можно увидеть диаграммы взаимосвязей между классами.

Еженедельные обновления Symfony #82 (21-27 июля 2008)

Запись опубликована (PHP, Symfony) от Igor в 28-07-2008 00:48

Неделька выдалась спокойной для разработчиков системы :).

Были закрыты очень важные баги
• r10425, r10426: [1.1, 1.2] баг был связан с перегенерацией сессии при использовании базы данных в виде хранилища. Каждый раз при отправке запроса создавалась новая “чистая” сессия, что не позволяло запоминать/прочитать данные с предыдущей сессии.
• r10466, r10467: [1.1, 1.2] добавлена опция rsync-options в задачу sfProjectDeploy.
• Добавлены обработчики исключений и многое другое…

Обновление документации
Урок: Мой первый проект (My first project tutorial)
Как хранить файлы в БД
Кодирование Symfony с Vim
Как обновить проект под новую версию Symfony 1.1
В вики разместили все страницы касающиеся новой версии Симфони 1.1. В частности, как обновиться с версии 1.0 на 1.1. Какие произошли изменения в архитектуре, новые команды, методы…
Список изменения названий команд (Task Names)

Документация на русском языке

Добавлены новые плагины, плюс многие обновлены:

  • YsfAPIClientPlugin
  • TaOpenIDsfGuardPlugin
  • SfPHPDocumentorPlugin

Более подробную информацию можно получить в официальном релизе A week of symfony #82 (21->27 july 2008)

Модификация CodeIgniter для включение profiler глобально

Запись опубликована (PHP) от Igor в 26-07-2008 22:06

В предыдущих проектах использовали этот простой, но шустрый php framework. В нем есть профайлер.

    Внизу страницы появляться блок с отладочными данными о страницы:

  • время генерации страницы, запросов
  • GET/POST запросы
  • SQL-запросы
  • количество потребляемой памяти

Чтобы не вставлять этот код в каждом контроллере


$this->output->enable_profiler(TRUE);

был сделан следующий хак.

Модификация файла CodeIgniter\system\libraries\Controller.php
до


	function Controller()
	{
		parent::CI_Base();
		$this->_ci_initialize();
		log_message('debug', "Controller Class Initialized");
	}

и после


	function Controller()
	{
		parent::CI_Base();
		$this->_ci_initialize();
		log_message('debug', "Controller Class Initialized");

		// Hack CodeIgniter Profiler
		if ($this->config->item('output_enable_profiler') == TRUE) {
			$this->output->enable_profiler(TRUE);
		}
	}

Теперь в файле конфигурации приложения application\config\config.php можно добавить параметр


$config['output_enable_profiler'] = TRUE; 

Если надо отключить профайлер устанавливаем значение FALSE. Если это мешает в каком-то конкретном контроллере, то пользуемся стандартной конструкцией:


$this->output->enable_profiler(FALSE);


Ссылки по теме:
CodeIgniter: Profiling Your Application
Профилирование приложения CodeIgniter
http://en.wikipedia.org/wiki/CodeIgniter

Доступен для скачивания релиз Zend Framework 1.6 RC1

Запись опубликована (PHP, Zend Framework) от Igor в 23-07-2008 18:58

Скачать новый релиз можно тут Zend Framework 1.6 RC 1

Обзор новых возможностей:

  • Интеграция с Dojo
    • JSON-RPC
    • Dojo Data packing
    • Dojo View Helper
    • Dijit integration with Zend_Form & Zend_View
    • Dojo Library Distribution
  • SOAP (server/client)
    • SOAP Server
    • SOAP Client
    • Autodiscovery
    • WSDL access
    • WSDL Generation
  • Preview of Tooling Project in Laboratory (see /laboratory folder)
    • Command Line Interface
    • Project Asset Management
  • Unit Testing Harness for Controllers
  • Lucene 2.3 Index File Format Support
  • Zend_Session save handler for Database Tables
  • Paginator Component
  • Text/Figlet Support
  • ReCaptcha Service
  • Zend_Config_Xml Attribute Support
  • Character Set Option for DB Adapters
  • Zend File Transfer Component
  • New Media View Helpers (Flash, Quicktime, Object, and Page)
  • Support in Zend_Translate for INI File Format

Разработчики ожидают фидбэк от пользователей, что повлияет на количество выпускаемых релизов. И крайне не рекомендуют использовать эту версию в разработке :), только в качестве изучения новых возможностей.

Контроль качества в PHP проектах - слайд от Sebastian Bergmann

Запись опубликована (PHP) от Igor в 21-07-2008 23:57

Sebastian Bergmann разместил очень интересный слайд. Он также хорошо известен своей разработкой phpUnit . Текущая версия 3.3, в Milestone можно увидеть, что работает над 4-й версией, которая будет работать под PHP 5.3.

PHP профайлер Xdebug

Запись опубликована (PHP, Отладка) от Igor в 21-07-2008 23:11

Есть такой замечательный отладчик/профайлер Xdebug. Как для Windows так и для никсов.

Сайт разработчика: xdebug.org.

Что это такое это? Это расширение для PHP, которое работает как debugger и profiler. В настройках можно указать, что использовать, а что нет, можно все включить. Очень важные параметр xdebug.profiler_output_name, если его оставить по умолчанию, тогда вся отладочная информация будет записываться в один файл, а это бывает плохо, т.к. грузиться, например, страница, а с ней запускается 3- и больше файлов PHP: сама страница, Ajax, CSS, локализация. И в итоге в отладке будет последний файл. А так с помощью маски получаем уникальные файлы. В данном случае в таком виде: cachegrind.out.1208803760.D_home_demo-site_htdocs_sf_sandbox_web_index_php. В общем на офф. сайте можно найти подробнейшую помощь по Xdebug.

Подключение его в php.ini:


[Xdebug]
zend_extension_ts="php_xdebug-2.0.3-5.2.5.dll"
xdebug.default_enable = Off

xdebug.profiler_enable = Off ;Off
xdebug.profiler_output_dir = "/tmp/xdebug/cachegrid"
xdebug.profiler_append = On
xdebug.profiler_output_name = "cachegrind.out.%t.%s"

xdebug.auto_trace = Off
xdebug.trace_format = 0
xdebug.collect_params = 1
xdebug.collect_return = 1
xdebug.collect_includes = 1
xdebug.trace_options = 1
xdebug.trace_output_dir = "/tmp/xdebug/trace"

Программы для просмотра логов profiler:

  1. KCacheGrind - не юзал.
  2. WinCacheGrind - софтина под Винду, старая, апреля 2005 года. На её данные особо опираться не следует, т.к. информация относительная. Но общую картину дать может. Сам пользуюсь. Несколько раз показала интересные вещи, плюс помогла найти баги.
  3. CachegrindVisualizer - с офф. сайта. Это кроссплатформенная программа для визуализации файлов в формате Callgrind, в частности, его подмножества используемого Cachegrind. Профайлер Xdebug является совместимым с Cachegrind.
  4. Webgrind - Xdebug profiling c web frontend на PHP5. Все просто скопировал файлы, конфиг прочитался автоматом из настроек php.ini. Стоит только выбрать файл, и результат на экран. Минус - все написано на ПХП, следовательно если файл профайлера огромный будут тормоза.
  5. XDebugClient - это клиент для дебаггера, прослушает его и отображает у себя в консоли, только под Windows, не проверял.

Что можно почитать: