Обновить
63.9

PHP *

Скриптовый язык общего назначения

Сначала показывать
Порог рейтинга
Уровень сложности

phpDaemon — фреймворк асинхронных приложений

Время на прочтение6 мин
Количество просмотров45K
Сегодня речь пойдет о phpDaemon — асинхронном модульном демоне-фреймворке, который берёт на себя обработку I/O (libevent) и другие низкоуровневые задачи, присущие демонам. С его помощью легко писать правильные сетевые приложения с блэкджеком и шлюхами.
Из коробки идут сервера FastCGI, HTTP, CGI, FlashPolicy, Telnet, WebSocket (!) — да-да тот самый волшебный пендаль новый протокол от Google. И клиенты mysql, memcached, mongodb… И многое другое, полный список под катом. Работать с сетью действительно просто. Программист средней руки может написать, к примеру, IRC-бота за считанные часы.
В качестве наглядного примера я реализовал вот этот чат на phpDaemon + WebSocket + MongoDB + jQuery. Он наглядно демонстрирует преимущества этой технологии: доставка сообщений мгновенна, накладные расходы при обмене данными минимальны, высока производительность, приложение масштабируется горизонтально. Исходники этого чата (в данный момент 17 кб). Прошу заметить, чат тестировался и работает в Chrome, FF, IE6+, Iron, Safari.
Читать дальше →

Реализация noSQL на PHP

Время на прочтение2 мин
Количество просмотров3.7K
Скорость, друзья, — вот одно из важных составляющих вашего проекта. Пока ресурс посещает 10-100 пользователей в день, то все нормально — пользователь радуется и приглашает к вам своих друзей, друзья своих друзей и так далее. Нагрузка растет…
noSQL технология под катом

Подробнее об анализаторе исходного кода PHP Depend

Время на прочтение4 мин
Количество просмотров5.6K
image В одном из обзоров на Хабре уже упоминался анализатор кода PHP Depend (http://pdepend.org/). В данном материале хотелось бы рассмотреть небольшой пример его использования и интерпретации результатов.
Читать дальше →

Создание модуля для Magento — часть 1

Время на прочтение16 мин
Количество просмотров32K
Популярность Magento постоянно растет. Появляется множество новых интеренет-магазинов, написанных на этом замечательном движке.
К сожалению, информации для разработчиков маловато, поэтому, будем исправлять ситуацию :)
В мои планы входит написание нескольких статей о том, как создать модуль для Magento, на примере модуля блога.
Оригинал данной статьи находится на моем блоге.
Читать дальше →

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

Время на прочтение7 мин
Количество просмотров1.9K
Жил-был в составе поиска по блогам Яндекса рейтинг популярных записей, который для многих был такой себе ежедневной газеткой. Но решили в Яндексе его закрыть да предоставили API, чтобы каждый желающий мог сделать свой рейтинг популярных записей по блогам, чем мы собственно сегодня и займемся. Писать будем на PHP.
Читать дальше →

Релиз PHP 5.2.12

Время на прочтение2 мин
Количество просмотров1.5K
Команда разработчиков PHP анонсировала выход PHP 5.2.12. Этот релиз делает акцент на улучшении надежности PHP ветки 5.2.X, добавляя в нее больше 60 исправлений, некоторые из которых связаны с безопасностью. Всем пользователям PHP ветки 5.2 рекомендуется перейти на эту версию.
Читать дальше →

Пишем свою реализацию сессий для обработки мертвой сессии перед зачисткой

Время на прочтение3 мин
Количество просмотров5.1K
Мой первый хабратопик, надеюсь, что не последний.

Представим ситуацию: есть корзина покупок на сайте, при добавлении в корзину мы ставим на товар т.н. lock, исключающий его из списка доступных для покупки товаров. Когда клиент удаляет товар из корзины — lock снимается. Но что делать, если пользователь просто закрыл браузер? В таком случае сессия будет удалена сборщиком мусора, а локи так и останутся.

Когда я столкнулся с такой ситуацией, первое что мне пришло в голову — хранить локи и дату доступа в БД и периодически дергать её кроном. Но костыльность этого решения очевидна. А вот ещё бред, с которым я столкнулся при решении сабжа: для сериализации и десереализации сессий используются функции и формат, отличные от функций serialize и unserialize. Приходится делать велосипеды для ансериализации сессии.

Ближе к телу: как решил проблему я…
Читать дальше →

Профилирование PHP-кода

Время на прочтение3 мин
Количество просмотров36K
Профилирование PHP-кода

Рано или поздно каждый из нас сталкивается с унаследованным кодом и его оптимизацией. Дебаггер и профилировшик в такой ситуации — лучшие помощники программиста. У тех кто работает с PHP, благодаря Дерику Ретансу (Derick Rethans) есть хороший инструмент — xDebug. Информации касательно xDebug много даже в рунете, поэтому речь в этой статье пойдет не о нем.

Наткнувшись на упоминание о профилировщике для PHP я сразу подумал об xDebug ( о проприетарных инструментах от Zend я давно уже успел позабыть ), но на этот раз ошибся — речь пойдет об XHProf.
XHProf

Этот профилировшик был разработан специально для Facebook, а исходный код его был открыт в марте 2009 года.
Читать дальше →

Magento. Пишем свой модуль. Добавляем CAPTCHA и дополнительные поля в регистрацию

Время на прочтение11 мин
Количество просмотров17K
Хочу поделится опытом программирования модулей для Magento. Большое спасибо пользователю jeje за приглашение.
В статье подробно описано создание модуля, реализующего допольнительные функции регистрации клиентов. Цели — дать представление о разработке под Magento на конкретном примере от начала до конца, показать основные подходы, организацию кода, указать на некоторые особенности. Статья ориентирована скорее на новичков, но и знакомые с Magento могут вынести что-то полезное для себя. Конечно в одной статье всего описать невозможно, но если тема окажется востребованной, то это может стать началом цикла статей.
Затронуты следующие моменты:
  • создание модуля
  • работа с блоками, шаблонами и разметкой (layout)
  • переопределение контроллера
  • скрипты инсталляции модуля

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

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

phpUnderControl 0.5.0

Время на прочтение3 мин
Количество просмотров2.3K
phpUnderControl нацелен упростить интеграцию CruiseControl и PHP сделав ее как можно проще. Он объединяет лучшие инструменты в сочетании с простой установкой. Так же позволяет просматривать отчеты от РНРunit, PHP_CodeSniffer и PHPDocumentor. ©

Если ваш опыт работы с PHP менее года или же если вы при отладке программ используете var_dump() / printr() и считаете что это единственно верный вариант — проходите мимо, все оскорбленные могут смело идти прямо в профиль и вымещать злобу на карме. Если вы действительно хотите узнать что это такое и для чего это нужно, то советую начать с установки phpUnderControl по этой статье желательно не на Windows платформе и параллельного изучения соответствующей статьи. Надеюсь что в ближайшем будущем на PHP будут создаваться более качественные и технологичные разработки благодаря популяризации современных методов разработки ПО.

После довольно продолжительного времени автор phpUnderControl выпустил очередную версию 0.5.0. Кроме незначительных изменений, исправлений и улучшений в этой версии содержится одна новая важная особенность: PHP_CodeBrowser (обзор на англ.).

phpUnderControl 0.5.0

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

SignalsyMQ — простая и быстрая очередь сообщений на PHP+Redis (и немножко Zend Framework)

Время на прочтение10 мин
Количество просмотров8.2K

Приветствую читателей. Сейчас я веду разработку собственного фреймворка, основанного, в противовес главенствующей сейчас модели MVC, на базе сигнальной архитектуры (signal/slot). Пока он проходит боевую обкатку в нашем стартапе, и за это время я понял, что просто библиотеки мало — реальные задачи и виденье будущего показывает, что необходим разный функционал, но объединенный одной темой — обработка и доставка информации множеству клиентов в реальном времени (да, в чем-то схоже с Comet-ом, он там тоже есть). Поэтому решено было попробовать реализовать основной компонент — очередь сообщений, которая бы стала основной для следующих проектов, быстрой, гибкой и масштабируемой.

Что получилось? Альфа-версия SignalsyMQ — очередь сообщений на базе PHP/Redis/Zend Framework.
Читать дальше →

Ближайшие события

Отвёртка для выражений

Время на прочтение5 мин
Количество просмотров3.3K
Область применения разбора математических выражений представить не сложно — это и всевозможные парсеры SQL-запросов, и обработчики формул, вводимых пользователем (то же построение графиков или фильтры к БД) — вплоть до создания собственных языков (намеренно не пишу слово «программирования», т.к. зачастую это языки описания данных и иже с ними).

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

Результат моих потуг вы можете обнаружить здесь. В архиве вы найдёте скрипты, необходимые для функционирования библиотеки, и пример её работы (sample.php). Библиотека собрана как standalone.

Но, я полагаю, интересно было бы разобраться, что там к чему.

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

PHP closures и передача аргументов по ссылке

Время на прочтение8 мин
Количество просмотров4.1K
Ради интереса я решил сделать механизм замыканий (closures) на PHP. Я знаю, что в PHP 5.3 такой механизм есть, поэтому подчёркиваю — чисто из академического интереса. И моя любознательность дала (по крайней мере, для меня — кто-то с этим уже мог иметь дело) свои плоды — помимо собственно замыканий я получил интересный метод передачи аргументов.

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

Иной — PHPTAL

Время на прочтение7 мин
Количество просмотров1.7K
Для описания этого очень мощного и одновременно лаконичного шаблонизатора просто скопирую текст из мана
«PHPTAL is an implementation of the excellent Zope Page Template (ZPT) system for PHP. PHPTAL supports TAL, METAL, I18N namespaces» и «PHPTALES is the equivalent of TALES, the Template Attribute Language Expression Syntax. It defines how XML attribute values are handled»

Предлагается по LGPL лицензии тут http://phptal.org/.

Я делаю шаблоны на PHPTAL уже около года и считаю его «феерическим» :). В коде есть пара моих патчей, поэтому я знаю тему изнутри.

Далее я сделаю обзорную статью из которой вы точно поймете что я не писатель и почему всячески противился просьбам хабражителей «раскрыть тему» ну и надеюсь хоть чуть-чуть популяризирую данный шедевр.

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

Вышел SmartyPDT 0.9.0

Время на прочтение1 мин
Количество просмотров944
Ну наконец-то таки свершилось… для Zend 7.1, Eclipse последних версий и для Aptana 2.0 — вышел замечательный (и единственный) плагин подсветки синтаксиса SmartyPDT v.0.9.0.

Процесс установки:

1. Help -> Install New Software
2. Жмем кнопку «Add».., жмем кнопку Archive.., выбираем скачанный .zip-архив;
(!!!) Обязательно снимаем галочку на «Group items by category»;
И у нас появляется в списке выбор «Smarty Feature»
Далее по аналогии «next-next-finish».

Кричим «Ура!», и дальше продолжаем работать с повышенным комфортом.

Текст любой ценой: PPT. Дубль второй

Время на прочтение1 мин
Количество просмотров1.5K
Недавно я анонсировал свой вариант чтения презентаций PowerPoint с помощью чистого PHP. Тогда я с сожалением отметил, что класс сырой и нуждается в доработке. Долго ли, коротко ли, но ошибки были найдены — теперь файлы читаются заметно лучше, без всякой грязи. Надеюсь, вам пригодятся мои наработки.
Читать дальше →

прикручиваем плагины от Idea к WebIde

Время на прочтение2 мин
Количество просмотров923
Сегодня успешно закончив написание одного маленького, но очень полезного лично для меня плагина к IDEA, расстроился из-за невозможности прикрутить его к WebIDE, хотя в Idea 7/8/9 полет нормальный.
И вот, взрустнув и занявшись сравнительным анализом «старых» и «новых/кошерных» плагинов, обнаружил способ прикрутить к JetBrains WebIDE почти любой плагин от IDEA, коим и спешу поделиться :)
Читать дальше →

Поиск по сайту на основе Yandex.XML

Время на прочтение3 мин
Количество просмотров14K
Почему-то вебмастера ленятся сделать нормальный поиск по своему сайту. Особенно это касается высокопосещаемых сайтов, где качественный поиск был бы очень удобен для рядового пользователя.

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

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