Категории: PHP

Создание XML файлов из массивов на PHP

Владимир | | PHP, Web разработка.

Сегодня речь пойдет о работе с XML, а точнее об отправке данных PHP скриптов браузеру в формате XML.

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

Постановка задачи

Есть PHP массив (может быть многомерным). Нужно получить xml строку с данными из этого массива.

Немного теории

В дистрибутив PHP входит модуль XMLWriter, который предназначен для записи данных в XML формате. Использовать непосредственно этот модуль в своих скриптах не очень удобно, т.к. он поддерживает только самые базовые функции и преобразование массива в этот формат «выливается» в несколько десятков строк кода.

Поэтому мы напишем собственный класс (Array2XML), который будет представлять собой оболочку для XMLWriter'а и решать одну узкую задачу – преобразовывать PHP массив в XML формат.
Читать дальше

Подключаем FCKeditor к CodeIgniter

Владимир | | CodeIgniter, PHP, Web разработка.

FCKeditor, на мой взгляд, один из лучших online редакторов. И в теории его можно подключить практически к любому сайту, независимо от того какой движок/фреймворк/CMS используется.

Но, естественно, всегда существует несколько нюансов, которые немного усложняют жизнь 🙂

В этой статье речь пойдет о том как подключить этот редактор к сайту использующему PHP фреймворк CodeIgniter. Вообще-то я нашел довольно много статей и рекомендаций на эту тему, но в большинстве из них предлагается скопировать файлы редактора в папки библиотек или плагинов, а, на мой взгляд, это не правильно.

Дело вот в чем. Плагины и библиотеки (пользовательские) обычно находятся в папке application, которая не обязательно должна находиться внутри DOCUMENT_ROOT. Точнее, с точки зрения безопасности, эту папку лучше убрать за пределы DOCUMENT_ROOT чтобы исключить любую возможность прямого доступа к скриптам сайта (т.е. скрипты будут доступны только через index.php).

Но FCKeditor содержит файлы картинок, стилей и т.п., к которым нужно обеспечить прямой доступ. Т.е. его нужно разместить внутри DOCUMENT_ROOT.

Как оказалось, обойти эту проблему совсем не сложно.
Читать дальше

Генератор форм для новой версии CodeIgniter

Владимир | | CodeIgniter, PHP, Web разработка.

Думаю, все кто работает с CodeIgniter в курсе – на этой недели вышла его очередная версия (1.7).

Изменения довольно интересные и существенные (на русском здесь). Самое главное — добавлена новая библиотека для проверки форм (Form Validation).

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

То же самое касается и моего генератора форм. Работать со старой версией можно, но код будет совместим только с версиями 1.6 и более ранними.

Т.к. отставать от развития не правильно, я написал новую версию генератора.
Читать дальше

Определяем нагрузку на сервер Apache

Владимир | | PHP, Web разработка.

В этой статье я расскажу о том, как получить данные о работе web сервера Apache и представить их в удобном для анализа виде.

Начнем с получения данных.

Для того этого, необходимо подключить модуль mod_status. Он отслеживает работу сервера и показывает данные в виде обычной html страницы. С его помощью можно узнать:

1) количество процессов, выполняющих обработку запросов;

2) количество процессов, которые находятся в состоянии ожидания;

3) состояние каждого процесса, число обработанных им запросов и переданных данных;

4) общее количество запросов и переданных данных;

5) время работы сервера (запуск, перезапуск и общее время работы (uptime));

6) общая статистика: среднее число запросов в сек, байт на запрос, байт в сек;

7) использование CPU каждым процессом отдельно и apache’ем в целом в данный момент;

8 ) хосты и их запросы, которые обрабатываются в данный момент.

Переходим к настройке
Читать дальше

Создаем скрипт для автоматической отправки опечаток

Владимир | | HTML, JavaScript, PHP, Web разработка.

Если вы следите за новыми web сервисами, то наверняка слышали о системе Orphus Дмитрия Котерова. Её основная цель – уменьшить количество орфографических ошибок на web сайтах.

Идея очень простая и элегантная. Если посетитель видит ошибку, то он выделяет её с помощью мышки и нажимает «Ctrl+Enter». После этого, владелец сайта получает письмо с выделенным текстом. Главное преимущество в том, что посетителю нужно сделать минимум действий. Никаких перезагрузок страниц и заполнения форм, нужна только поддержка JavaScript в браузере.

В этой статье я расскажу о том, как самостоятельно сделать подобную систему для собственного сайта.

Преимущества такого решения.

1) Вы не зависите от стороннего сервиса.

2) Сообщения об опечатках можно будет просматривать через web интерфейс. Все-таки это удобнее чем копаться в почте 😉 .

3) Можно легко реализовать защиту от спама.
Читать дальше

Загрузка файлов по FTP с помощью Phing

Владимир | | Phing, PHP, Web разработка.

Предыдущая статья о Phing была немного не полной из-за отсутствия возможности загружать файлы на сервер в автоматическом режиме.

В стандартной комплектации Phing загрузку по FTP не поддерживает (кстати, довольно странно). Но, естественно, писать самостоятельно этот task не придется. Все уже сделано за нас 😉 .

Я нашел два task’а, предназначенных для работы с FTP: FtpUploadTask и FtpDeploy.
Читать дальше

Webgrind – удобный интерфейс для анализа быстродействия PHP скриптов

Владимир | | PHP, Web разработка.

О xDebug знает, наверное, каждый PHP разработчик. Этот отладчик позволяет получить подробную информацию о работе PHP скрипта.

Одной из самых интересные его возможностей является анализ производительности (profiling). Если говорить кратко, то в этом режиме xDebug отслеживает, какие функции были вызваны и сколько времени они выполнялись. Т.е. вы сможете легко найти «узкие» места в приложении.

Но результаты анализа записываются в текстовый файл в специальном формате, и просматривать его с помощью обычного редактора очень не удобно. Самыми известными приложениями для работы с этими файлами являеются KCacheGrind (под Linux) и WinCacheGrind (аналог для Windows).

Но недавно я узнал, что существует web приложение для просмотра файлов. Называется оно Webgrind.
Читать дальше

Кэширование части страницы в CodeIgniter

Владимир | | CodeIgniter, PHP, Web разработка.

CodeIgniter имеет встроенную библиотеку кэширования страниц. Но она работает только с целыми страницами, т.е. вы не можете кэшировать часть страницы.

Представьте такую ситуацию. Большинство страниц сайта формируется на основе запроса пользователя, например, вы показываете результаты поиска. Кэшировать такие страницы нет никакого смысла, т.к. вероятность того, что посетители будут искать одно и тоже, довольно низкая.

В тоже время, на страницах могут находиться одинаковые блоки данных, например, в сайдбаре. Это могут быть различные виджеты, навигационные меню и т.п. И естественно на их создание тратятся ресурсы и в некоторых случаях довольно ощутимые, т.е. такие блоки можно и нужно кэшировать.

Специально для таких случаев я написал небольшую библиотеку (ссылка на архив с ней находится внизу страницы).
Читать дальше

Облако тегов для сайта (кластеризация)

Владимир | | CodeIgniter, PHP, Web разработка.

Не так давно я рассказывал о том, как создать простое облако тегов для сайта (блога) и думал, что обо всех основных принципах рассказал. Но неожиданно (для меня 😉 ) тема получила продолжение.

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

Я кратко поясню, в чем основной недостаток облака тегов. Представьте, что у вас есть парочка тегов, которые вы используете очень часто и несколько других тегов, которые встречаются от случая к случаю. Каким шрифтом будут написаны имена тегов?
Читать дальше

Поддержка автодополнения для сторонних библиотек в Eclipse

Владимир | | Eclipse, PHP, Web разработка.

Современную IDE сложно представить без функции автодополнения кода. По большому счету эта функция экономит время больше чем любая другая.

Во-первых, вы пишите только первые символы, а оставшуюся часть слова подставляет IDE. Во-вторых, выполняется автоматическая проверка. Если автодополнение не появилось, значит, вы где-то ошиблись.

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

Каждый раз, когда вы набираете новый символ, Eclipse ищет возможные варианты замены. По-умолчанию поиск выполняется в стандартных библиотеках и файлах проекта. Но вы можете расширить область поиска.

Допустим, вы используете в текущем проекте библиотеку Adodb и хотите, чтобы работало автодополнение для ее классов.
Читать дальше