Почти в каждом более менее динамическом проекте бывает возникает необходимость выполнять очереди задач в фоне (отправка email, обновления кеша, реиндексация поиска и т.д.). Job сервера (Gearman и т.п.) хороши, но для большинства простых задач они избыточны. Классическая реализация очередей в MySQL (при помощи SELECT … LOCK FOR UPDATE) при росте нагрузки со временем начинает приводить к проблемам с блокировкой. Потому, как это обычно бывает, пришлось написать свой «велосипед» для работы с фоновыми задачами, который бы «точно работал» и был предельно прост.
Читать полностью »
Рубрика «php» - 245
Простой сервер задач с очередью в MySQL (без проблем с блокировками)
2012-07-15 в 16:47, admin, рубрики: mysql, php, метки: mysql, PHPЖизнь на собственном сервере
2012-07-15 в 6:47, admin, рубрики: diy или сделай сам, NAS, open source, opensource, php, метки: NAS, opensource, PHPПокупать готовое устройство для организации домашнего сервера (NAS) может и более простой способ, но точно не самый интересный. А сделать такой сервер можно по разному.
Например, лет 10 назад у меня был старенький системный блок с одним HDD под управлением linux. Его главной задачей было — держать SMB-шару. Позже, с появлением жены, требования к такому серверу изменились: он должен быть маленьким (занимать мало места), не гудеть и не потреблять много электричества. Поэтому систему пришлось менять.

WordPress Plugin длиной в одну страницу
2012-07-12 в 22:28, admin, рубрики: javascript, php, plugin, wordpress, метки: javascript, PHP, plugin, wordpressПочему люди любят WordPress? Потому что с ним просто работать. В нём нет гибкости большущих CMS вроде Joomla и Drupal, — а значит, не запутаешься. И ещё он очень популярен — а значит, можно найти плагины на все случаи жизни.
Неспроста несмотря на осуждение со стороны Lurkmore.ru, WordPress-ом пользуются и Герб Саттер, и Марк Шаттлворт, и много кто ещё. Например, я.
В своих записях я очень часто ссылаюсь на чужие блоги. И мне пришла идея — а почему бы не показывать рядом с ником человека, на которого я ссылаюсь, ещё и значок его сервиса? Например, птичку из твиттера или букву B из блогспота? Похожий функционал есть, например, в Википедии, да и многие блогохостинги это позволяют (например, Dreamwidth).
Так и родился плагин для WordPress Rikki's WP Social Icons. Позволяет за один клик мышкой добавить ссылку на эккаунт в каком-нибудь сервисе, от социальной сети до GitHub.
Читать полностью »
Загрузка и отправка формы по AJAX на Drupal 7
2012-07-12 в 18:48, admin, рубрики: ajax, drupal, php, метки: ajax, drupal, PHP
Недавно мне потребовалось реализовать сабмит формы по AJAX. При этом форма должна загружаться в попапе. Казалось бы задача тривиальная, но оказалось что все же есть подводные камни.
Задача решается для Drupal 7. В качестве библиотеки для создания popup'ов используется fancybox.
Читать полностью »
PHP 5.4 был опубликован четыре месяца назад, так что, вероятно, слишком рано смотреть на новую версию PHP. Тем не менее я бы хотел сделать для всех, кто не подписан на внутренний список рассылок, небольшой предварительный обзор того, как может выглядеть PHP 5.5.
Однако необходимо понять: PHP 5.5 еще на ранней стадии развития, поэтому никто не знает, как он будет выглядеть в итоге. Все, о чем здесь написано это только предложения. Я уверен, что не все это будет в PHP 5.5, или будет, но не в таком виде.
Так что не стоит слишком возбуждаться :)
Теперь, без лишних церемоний, список фич, над которыми ведется работа в PHP 5.5:
Читать полностью »
Несколько заблуждений распределенных вычислений для PHP разработчика
2012-07-12 в 10:52, admin, рубрики: php, заблуждения, ошибки, Программирование 
Семь заблуждений разработки распределенных вычислительных приложений были придуманы в 1997 году человеком, по имени Peter Deutsch. Позже, восьмой был придуман Джеймсом Гослингом (отцом Java).
Эти заблуждения имеют непосредственное отношение к нам, PHP разработчикам, так как мы строим распределенные приложений каждый день. Мы строим гибридные приложения, которые взаимодействуют с аутентификацией пользователей с помощью Facebook, Google, Twitter или API, получают информацию из удаленных баз данных и служб кэширования и т.д. Не делайте ошибки, на построениях распределенных компьютерных приложений.
Учитывая, что мы строим распределенные приложения, важно, что мы понимаем ошибки и как они влияют на нас. Я приведу несколько подобных заблуждений.Читать полностью »
Введение в PHP 5.3 замыканий — одно из главных его новшеств и хотя после релиза прошло уже несколько лет, до сих пор не сложилось стандартной практики использования этой возможности языка. В этой статье я попробовал собрать все наиболее интересные возможности по применению замыканий в PHP.
Читать полностью »
LINQ для PHP. Часть 1. Я его слепила из того, что было, а потом, что было, то и полюбила
2012-07-11 в 16:59, admin, рубрики: functional programming, linq, php, phpstorm, sql, грусть, печаль, похапэ, Программирование, функциональное программирование, метки: functional programming, linq, PHP, phpstorm, sql, грусть, печаль, похапэ, функциональное программированиеСказ о том, как PHP на LINQ портировали. Сравнение ныне существующих библиотек с табличками, но без графиков — прилагается.
Картинка код для привлечения внимания (картинок не дождётесь!)
echo Phinq::create($people)
->groupBy(function($person) { return $person->residence->region; })
->select(function($grouping) {
$obj = new stdClass();
$obj->people = $grouping;
$obj->region = $grouping->getKey();
return $obj;
})->orderBy(function($obj) { return $obj->people->count(); }, true)
->aggregate(function($current, $next) {
$count = $next->people->count();
return $current . sprintf(
"%d %s (%s) live in the %s regionn",
$count,
$count === 1 ? 'person' : 'people',
$next->people->aggregate(function($current, $next) {
if ($current !== null) {
$current .= ', ';
}
return $current . sprintf('%s [%s]', $next->name, $next->residence->code);
}),
$next->region
);
});
Кто видел C# или любой функциональный язык — при виде этого шедевра закатит глаза (если они предварительно не вылетят из орбит). И, наверное, будет прав. Но можно ещё вот так:
$lowNums =
from('$n')->in($numbers)->
where('$n < 5')->
store($digits)->into('digits')->
select('$digits[$n]');
Google Cloud Messaging: Библиотека для Codeigniter и пара отличий Google Cloud Messaging и Apple Push Notifications
2012-07-11 в 10:39, admin, рубрики: codeigniter, gcm, Google API, google cloud messaging, php, push, push notifications, метки: codeigniter, gcm, google cloud messaging, PHP, push, push notificationsДобрый день, друзья,
Буквально недавно questman написал статью о новом-старом сервисе от Google под названием Google Cloud Messaging и привел пример приложения под android с его использованием.
Со своей колокольни я бы хотел продолжить тему с точки зрения server-side с оглядкой на опыт использования Apple Push Notifications.
Праздник Symfony в Москве
2012-07-11 в 10:36, admin, рубрики: php, symfony, symfony2, метки: PHP, symfony2Вчера прошел Speakers Corner по Symfony вместе с Lukas Kahwe Smith @lsmith
Про это уже писали и на хабре и в официальном блоге Ciklum
На афтепати выяснилось что Лукас будет и в Москве и в Нижнем Новгороде.
Читать полностью »
