Функции pack и unpack. Работа с бинарными данными.

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

June 17, 2012 · ukko

Сокеты — введение

Ещё один вид транспорта в unix системах, про который я пока не успел ничего рассказать - это сокеты. В переводе с английского, сокет - это штекер, т.е. элемент, позволяющий соединять между собой всякую фигню, например приборы. Для лучшего объяснения работы сокетов, удобно использовать популярный в интернете пример с телефоном и телефонной станцией. Где телефонная станция, словно сервер, держит соединения с сотнями или может тысячами различных телефонных аппаратов, а телефоны, эпизодически устанавливают соединение со станцией, и обмениваются своими данными....

August 3, 2011 · ukko

Принимаем аргументы из командной строки

Вот как обычно бывает: Нам нужно написать малюсенький консольный скрипт бекапа, который, может запускаться из крона, и при этом скрипт должен принимать параметры для соединения с базой данных. Функции argv и argc Самое простейшее что мы начнём писать будет выглядеть примерно так: cli-argv-argc.php // Ожидаем что скрипт будет вызываться с такими параметрами: // php backup.php dbuser dbpassword database host if ($argc != 5) { die(PHP_EOL . 'Use: php backup....

July 21, 2011 · ukko

Консольные программы для работы с ipc функциями

Наверняка после обзора очередей, сигналов, общей памяти и семафоров, появляется особая нужда в быстрых системных инструментах. Так как эти функции из php только транслируются на уровень ядра системы, поэтому многие инструменты уже разработаны и служат системным программистам верой и правдой уже много лет :-) sysctl С помощью этой утилиты можно просмотреть и отредактировать некоторые параметры системы. Например: u% sudo sysctl -a | grep queue error: permission denied on key 'vm.compact_memory' error: "Invalid argument" reading key "fs....

July 14, 2011 · ukko

Демоны — очереди сообщений

Всем привет! В предыдущих выпусках мы уже узнали как можно создавать простых демонов, как правильно посылать демонам сигналы, и эти же самые, принятые сигналы, корректно обрабатывать. Теперь мы вплотную подошли к моменту, когда наш демон должен научиться общаться с другими программами, или сам с собой, но в разных экземплярах. В мире unix, существует немыслимое множество способов передать команду или сообщение от демона к веб-скрипту и наборот. Но сейчас я хочу рассказать только про очереди сообщений — «System V IPC Messages Queues»....

June 27, 2011 · ukko

Демоны — сигналы

Демоны — сигналы Итак, овладев навыками создания простейшего демона, нам нужно научить его принимать сигналы из внешнего мира. Внимание! В статье требуется расширение php pcntl Сигналы — введение Отправка сигналов демону, как и любой другой программе в unix системах, выполняется совершенно нелогичной командой «kill». И для нас очень важно что бы программа могла правильно отработать своё «убиение». Завершить все незавершённые дела, или оставить их другому демону. Убийство происходит посредством передачи программе kill специального системного сигнала, например SIGTERM и идентификатора процесса PID....

June 20, 2011 · ukko

Демоны — Основы

Сегодня я расскажу один удивительный факт: Большинство веб-разработчиков ни разу в своей жизни не писали демонов. И не то что бы им это было не нужно, они просто никогда не задумывались о том что бы написать демона. Внимание! В статье требуется расширение php pcntl Введение Иногда их даже можно понять. Ведь все мы привыкли считать что прекрасно знаем как работает сайт, знаем наизусть эту идеологию MVC и забивать свою голову чем-то лишним нам совершенно не нужно....

May 29, 2011 · ukko

Jelly — Пишем сложные запросы

Все разработчики, рано или поздно, начинают понимать что стандартными средствами ORM библиотеки невозможно реализовать сложные и удобные запросы. То тут, мы не знаем как написать простейших запрос для подсчёта суммы, без вынимания всех значений, то там, мы не можем составить нетривиальное условие. В большинстве случаев, кроме удобного доступа к данным, ORM библиотеки доставляют нам головную боль с составлением сложных запросов и огромное количество избыточных выборок. Сегодня я хочу рассказать, как мы можем обойти часть сложностей и упростить себе работу и, возможно, снизить нагрузку на сервер, используя ORM Jelly....

March 23, 2011 · ukko

Модуль для простых миграций

В предыдущем посте я рассказывал о модулях миграций для Коханы 3. К сожалению ни один из модулей мне не понравился или по каким-то причинам не подошёл. Сейчас же, я хочу представить свой форк модуля для миграций. Он основан на kohana-3-migrations. И получился сам по себе лёгкий и лишённый нескольких детских болезней своего родителя. Итак, встречайте :) (он пока без нового названия и в экспериментальной ветке) Вкратце, что он умеет: Миграция сохраняется в виде обычной SQL-инструкции....

January 16, 2011 · ukko

Миграции в Kohana 3.0.*

Недавно восторженные апологеты «yii» опубликовали новость о том что теперь их фреймворк поддерживает миграции к базе данных. Имея опыт работы с миграциями в doctrine, я давно уже задумывался об использовании миграций в кохане. И решил что настал момент самостоятельно во всём разобраться. Если вы не знаете что такое миграции к базе данных, то вот вам небольшая теория. Теория про Петю и Васю и миграции Допустим Вася и Петя работают над одной программой — веб-сайтом для хомячков....

January 5, 2011 · ukko