Обновить
128K+

PHP *

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

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

Pinba — мониторим php в реальном времени

Время на прочтение4 мин
Охват и читатели59K
Как сказано на официальном сайте
Pinba is a realtime monitoring/statistics server for PHP using MySQL as a read-only interface.

И это действительно так. Она позволит вам в реальном времени получать статистику по работающему приложению, при этом не замедляя само приложение.
Что делать со статистикой — это уже ваше дело, например, мы выводим ее в заббикс и используем как для мониторинга стабильности (нет ошибок, мало число длинных запросов), так и для аналитики.
Удивительно, что про это действительно замечательное изобретение не было еще ни одной статьи на хабре.

Прочитать еще

Docblox — некоторые нововведения

Время на прочтение7 мин
Охват и читатели2.3K
Эта статья более подробно рассматривает некоторые нововведения, предложенные Docblox,- системой документирования для PHP 5.3+. Для понимания некоторых вещей необходимо прочитать предыдущую статью. Для простоты в качестве каталога с тестовыми исходными кодами я использовал /src/example/ (/src— симлинк на реальный каталог с моими исходными кодами).
Читать дальше →

Lock-free memcache API

Время на прочтение5 мин
Охват и читатели5K
Доброго времени суток, хабражители!
Этот пост есть краткий конспект многих часов раздумий, каляк на бумаге, набросков кода и, в конце-концов, реально работающего кода в продакшене.
Наш сайт (и далее — просто сайт) активно использует мемкеш для горячих данных. Код, заполняющий мемкеш, может работать очень долго (0,5 секунд — это долго) и при этом пользовательские запросы успевают запустить ещё сотню процедур обновления. Последстия понятны, однако долго мы просто не могли их заметить на уровне общей нагрузки. Только когда мы увидели всплески времени на обслуживание некоторых запросов (от возросшей нагрузки они ещё и попадали в SLOW_QUERIES_LOG MySQL) — тогда и закипела работа.
Пара рисунков, 100 строк кода и увлекательные пояснения здесь.

Параллельные вычисления, класс-обёртка для pcntl_fork()

Время на прочтение3 мин
Охват и читатели7.3K
Хочу показать свой базовый класс, который я использую для PHP скриптов.
Приемущество его в том, что легко можно «распараллелить» работу.
Используется pcntl_fork() со всеми «вытекающими».

(тестировалось только на линукс)
Читать дальше →

YAF — самый быстрый php фреймворк*

Время на прочтение1 мин
Охват и читатели15K
Yaf — это PHP микро-фреймворк, взявший за основу структуру приложения Zend Framework, но написанный на С и является PHP extension доступным через PECL.

Основной (и единственной) задачей для написания его послужила необходимость максимально быстрой (сравнимой с php) обработки запросов в парадигме MVC но с удобством предоставляемым Zend Framework.

Yaf и Zend Framework, имеют аналогичные API и подобную концепцию, сохраняя при этом совместимость.
Я сгенерировал тестовое приложение (zf create project test) и провел небольшой синтетический тест производительности.
Интересен результат? Добро пожаловать под кат

Знакомимся с PayPal API

Время на прочтение13 мин
Охват и читатели88K
На данный момент, PayPal — это самая популярная платформа электронных платежей. Именно то, насколько легко можно открыть счет и начать получать на него средства, по сравнению с традиционными способами получения платежей, и является причиной #1 его запредельной популярности. Второй причиной, многие со мной согласятся, является мощный API, предоставляемый PayPal. В этом топике я по порядку разложу все способы и трюки, связанные с работой PayPal API, чтобы вы избежали проблем с его интеграцией.
Читать дальше →

Docblox — система документирования, совместимая с PHP 5.3+

Время на прочтение4 мин
Охват и читатели3.8K
При очередном обновлении Phing с помощью PEAR я обратил внимание на список дополнительных зависимостей и решил посетить сайты тех проектов, названия которых мне ничего не говорили. Среди прочего я нашел один многообещающий проект, которым бы и хотел с вами поделиться. Представляю вам Docblox — новую систему документирования PHP-приложений, развивающую идеи, заложенные во всем известном PHP Documentor'е. На данный момент согласно нотации PEAR проект находится в стадии бета-тестирования, но уже используется при разработке таких проектов, как Zend Framework, Phing, Fuel и некоторых других.

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

И снова MVC

Время на прочтение10 мин
Охват и читатели5K
Привет Хаброобществу.

Однажды мне на глаза попалась статья с хабра ссылка. Попробовав ту систему, пришел к выводу, что у нее много недостатков, да и перевод оригинальной статьи присутствовал не полностью. Да, статья старючая, но в то же время хотелось написать свой небольшой фреймворк для создания простых и средних по сложности сайтов. Так как тащить с собой 2-3 мегабайта какого-либо серьезного фреймворка для создания сайта-визитки считаю кощунством (хоть и не всегда).

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

Iterator, ArrayAccess, Countable: Объект как массив

Время на прочтение5 мин
Охват и читатели32K

0. Intro.


В стандартной поставке php имеются 2 интересных интерфейса, позволяющие значительно изменять поведение объектов в языке.
Это Iterator и ArrayAccess. Первый позволяет итерировать объект через такие конструкции each, foreach, for. Второй же, в свою очередь, позволяет обращаться к объекту, как к массиву применяя привычное $array[] = 'newItem'. Соответственно, для полноценной эмуляции массива, объект обязан заимплементить оба интерфейса.
Читать дальше →

Определение кодировки текста в PHP, часть 2 — биграммы

Время на прочтение3 мин
Охват и читатели8.4K
В прошлой статье был реализован алгоритм автоматического определения кодировки текста на основе частот распределения символов. В комментариях отметили: если использовать биграммы (триграммы), результат будет более точный. Тогда я отмахнулся, мол, и на одиночных символах неплохой результат получается. Но сейчас подумал, что неплохо было бы добавить надежности и точности в алгоритм, тем более использование биграмм вместо одиночных символов сильно кушать не просит.

Под катом — пример реализации алгоритма на биграммах, исходники и результаты его работы.
Читать дальше →

Мгновенный поиск в 75 гигабайтах

Время на прочтение8 мин
Охват и читатели36K
Речь пойдет о том, как был реализован быстрый поиск по большим объемам данных на этой страничке. Там можно искать пароль по хешу, для игрового сервера PvPGN, и генерировать эти же хеши.
Поиск написан на чистом PHP, без использования модулей и сторонней БД. В принципе, таким образом можно наращивать объемы до многих терабайт, было бы место — скорость от этого не сильно пострадает.

Далее от начала до конца описан весь процесс, который включает в себя брутфорс, создание хеш таблицы, её сортировка и, собственно, поиск.


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

JavaScript: обработка include_once/import на PHP

Время на прочтение3 мин
Охват и читатели2.7K
Как включить один JavaScript файл в другой? Как обозначить зависимости между кодом расположенным в разных JavaScript файлах? Решения для этих проблем давно известны. А почему бы не попробовать разобраться с этим на сервере?
Читать дальше →

Визуализация связей внутри класса с помощью GraphViz

Время на прочтение2 мин
Охват и читатели7.6K
Прочитав книжку Р. Мартина «Чистый код», я исполнился решимостью и принялся за рефакторинг своего старого, большого и грязного проекта.

И захотелось мне посмотреть, как в одном из самых простых классов связаны между собой методы и поля. PhpCallGraph, быстро нагугленный, наладить не удалось (какие-то проблемы с xdebug), и к тому же, судя по примерам, он показывает связи во всём проекте, трассируя его, а мне нужно было исследовать один класс.

Я решил написать собственное решение, и вот что получилось.
Красивые картинки и не только

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

Pagodabox — облачный хостинг PHP проектов

Время на прочтение2 мин
Охват и читатели3.1K
imagePagoda Box это новый PaaS для PHP проектов. Это значит что заполнив всего несколько полей в форме можно запустить свой проект на масштабируемой платформе, где первая доза бесплатно и кроме этого специально для читателей habra была выделена большая партия приглашений, чтобы получить один — напишите в приват (ваш email не требуется).

P. S.
Я не являюсь членом команды разрабатывающей описываемый сервис, но имею в наличии пакет приглашений.

image

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

PHP-Матрёшки или Шаблоны для любого сайта из 8 строчек

Время на прочтение6 мин
Охват и читатели12K
Я расскажу о своих шаблонах (из восьми строчек), которые придумал в 2003 году и с тех пор они меня не подводили и не требовали каких-либо улучшений.

Суть шаблонов – это принцип матрешки, когда маленькая матрёшка — это часть той что побольше.
На практике это выглядит так: мы указываем имя первого пхп-шаблона, внутри которого прописываем имя вышестоящего шаблона, который, в свою очередь, также может указать на своего пхп-родителя и т.д.

image

Физически это выглядит так. У меня в апаче настроен хост http://start.local с домашней директорией для браузеров /home/start.local/www, где лежит стартовый корневой файл /home/start.local/www/index.php, который содержит в себе всего одну строчку:

<?load::integration('main.tpl');?>


Этот текст надо читать так: класс load вызывает функцию (метод) load::integration(), в которую передает один параметр – строчку 'main.tpl'.

Где, main.tpl – это имя файла первого пхп-шаблона, а функция load::integration() содержит механизм, который позволяет обрабатывать указанный шаблон. А конкретнее, он позволяет нам прописывать в шаблоне main.tpl, другой шаблон, например default.tpl, в который будет вложен результат выполнения mail.tpl. В свою очередь default.tpl, также может указать вышестоящий шаблон (как изображено на рисунке). Если же вышестоящих шаблонов не указано, то функция load::integration() остановит сборку шаблонов и отдаст общий результат выполнения всех шаблонов в браузер.

Далее я расскажу как все работает и дам ссылку скачать код.

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

Вышел PHP 5.3.8

Время на прочтение1 мин
Охват и читатели1.6K


По следам этого топика. Только что была выпущена очередная версия PHP 5.3.8 с исправленным багом #55439, из за которого функция crypt(), для md5 хэшей возвращала только salt.

Кроме этого, был исправлен баг #55283 из за которого mysqlnd SSL соединения подвешивались.

Команда разработчиков PHP заявляет что PHP линейки 5.2 более не поддерживается и всем настоятельно рекомендуется обновиться до PHP 5.3.8

Список изменений на английском вы можете найти в changelogе.

Скачать можно отсюда.
Бинарники для Windows отсюда.

PHP 5.3.7 released, но обновление содержит критическую ошибку

Время на прочтение1 мин
Охват и читатели767
18 Августа была анонсирована версия 5.3.7
22 Августа анонсирован Upgrade Warning который не рекомендует установку/апгрейд этой версии.

Вкратце: при использовании функции crypt() для хэшей MD5 выдаётся только соль.
Получается вот такая очень неприятная штука:

printf("MD5: %s\n", crypt('password', '$1$U7AjYB.O$'));

Должно быть:
----------------
MD5: $1$U7AjYB.O$L1N7ux7twaMIMw0En8UUR1

А получается только соль:
--------------
MD5: $1$U7AjYB.O


Баг работает только для MD5 (алгортим по-умолчанию в php), DES и BLOWFISH не затронуты.

Разработчики обещают выпустить версию 5.3.8 с багфиксом в течение нескольких дней.

Bug #55439 crypt() returns only the salt for MD5

Сертификация PHP 5.3 от Zend

Время на прочтение3 мин
Охват и читатели25K
Ну про Zend сертификацию PHP 5.3 никто еще не писал, попробую написать я, надеюсь, будет интересно.

План будет таков: сначала я расскажу зачем, потом о подготовке и о сдаче экзамена.

Приступим!
Читать дальше →

Если бы PHP был британским

Время на прочтение4 мин
Охват и читатели4.2K
image

Когда Расмус Лердорф впервые собрал PHP, он решил, довольно предусмотрительно и невзирая на свои корни, не использовать в нем датский или даже гренландский. Кстати, правильно сделал, иначе было бы крайне неприятно с ним работать. Взамен он, находясь в этот момент в Канаде, выбрал местный язык. Нет, не французский, а именно этот идиотский диалект Королевского Английского, который еще называют «US English».

С тех пор британские разработчики на PHP выказывали свое недовольство по отношению к этому факту. О чем он думал? И, что самое важное, как нам исправить это надругательство? Как нам разработчикам проследить за тем, чтобы традиции Британской Империи соблюдались и в цифровую эпоху?
Читать дальше →