Простая обработка больших XML файлов

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

SimpleXML
Первая мысль воспользоваться SimpleXML, однако её принцип работы основан на чтении всего файла целиком и разворачивании DOM-дерева в памяти. Очевидно такой код упрется в memory_limit.

DOM
Ситуация по использованию памяти такая же как и SimpleXML.

XML-анализатор
Это SAX-парсер — работает очень быстро, принцип прост и основан на «событиях», анализатор лишь сообщает «открылся элемент» либо «закрылся элемент». Однако за это придется платить, например для моей задачи пришлось бы написать некий стек, т.е. следить за вложенностью элементов, открытием/закрытием узлов и атрибутов. Из минусов еще библиотека достаточно старая и написана в процедурном стиле, также данное pecl-расширение редко встречается на хостингах.

XMLReader
Аналогично SAX-парсер, однако API удобнее и проще чем у XML-анализатора, вся логика сконцентрирована в одном классе. Расширение входит в стандартную поставку PHP и часто встречается на хостингах.

В итоге скрестил XMLReader и SimpleXML — получился SimpleXMLReader: репозиторий на github, пример использования.

Рубрика: Без рубрики | Добавить комментарий

Шаблон верстальщика Intecmedia.HTMLReset

Думаю многие программисты точат зуб на верстальщиков, в частности — на типичные и повторяющиейся баги. (:

Большинство css-фреймворков только от части соответствовало нашим корпоративным особенностям разработки. И как концентрация боли за проекты, я решил набросать корпоративный шаблон верстки — Intecmedia.HTMLReset.

За основы были взяты идеи из Normalize.css и HTML5 Boilerplate.

Особенности:

  • сбрасывает стандартные стили браузера
  • совсместимо со всеми современны браузерами (для IE6 используются фиксы)
  • готово к использованию HTML5 разметки
  • содержит базовую типографику текста, форм, таблиц, списков, заголовков
Рубрика: Без рубрики | Метки: | Добавить комментарий

Hello there!

Это первая запись, почитать про меня можно тут.

Тематика блога будет преимущественно касаться веб-разработки: для начала это будет серия постов о client-side.

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

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

Рубрика: Без рубрики | Добавить комментарий