В очередной раз читал про многопоточность в php точнее полное её отсутствие и всевозможные костыли в виде не блокируемых сокетов. Вот как раз там наткнулся на интересную статью в которой описывался очень простой и эффективный способ распараллеливания потоков. На основе этого материала написал небольшой класс что бы облегчить себе работу в будущем.
bolnikh @bolnikh
User
Дао Вебсервиса. (Или да хватит же изобретать велосипеды!)
12 min
59K
Увы, реальность за хабракатом меня сильно разочаровала — я увидел очередной велосипед, да еще и с квадратными колесами. (Коллеги, ничего личного, только техническое обсуждение.) Правда, авторы честно сказали, что увидели на нескольких сайтах модное слово REST и решили сделать по нему. Только вот поняли они этот «РЭСТ» по-своему, примерно как Дед Щукарь читал и понимал толковый словарь.
В этом топике я призываю по-настоящему покончить с велосипедами в API сайтов. Ведь получается какой анекдот: АПИ разрабатывается для упрощения доступа к сайту и легкости подключения внешних систем, а получается такой, что с ним еще сложнее, чем без него :)
Чуть ниже под катом я подпишу смертный приговор всем велосипедам в универсальных API. Чтобы не быть голословным, я все проиллюстрирую примерами.
Но должен предупредить сразу — после прочтения статьи вы не сможете без рвотного рефлекса смотреть на очередной велосипед Васи Пупкина под гордым названием «универсальное API сайта».
В повествовании будут рассмотрены следующие вопросы:
- Базовые технологии: XML-RPC, REST, SOAP и краткое сравнение
- Дао вебсервиса
- Просветленные API
- Как отличить сайтовое API от говна
- Выводы
+262
jQuery плагин для получения данных формы + ajax аплоадер файлов
30 min
19K
Итак, помимо, собственно моего небольшого плагина, нам понадобится сам jQuery последней версии, а так же небольшой плагин к нему, реализующий преобразование объектов\массивов в json-строку, для того, чтобы полученные данные можно было быстренько передавать на сервер.
updated
updated 2 — добавлена мультизагрузка!
+61
Универсальная система мониторинга Zabbix — введение
4 min
438K
И так, встречайте: Zabbix.
+33
dklab_multiplexor: постоянное Javascript-соединение с сервером в условиях сотен тысяч онлайн-клиентов
4 min
6.8KDklab_multiplexor — это инструмент, который позволяет держать одновременно сотни тысяч долгоживущих открытых HTTP-соединений с сервером. Например, если на вашем сайте находится одновременно несколько сот тысяч посетителей, каждый из них может быть связан с сервером постоянным соединением, установленным из JavaScript. Это например, полезно при организации онлайн-чатов или мгновенных уведомлений.
Dklab_multiplexor не претендует на полную универсальность или исключительность (кстати, если знаете аналоги, близкие по простоте к multiplexor-у, пишите в комментариях). Это лишь простейший инструмент, который наконец-то дошли руки опубликовать.
Предположим, посетители вашего сайта могут посылать друг другу сообщения. Если получатель в момент отправки находится на сайте (просматривает какую-либо страницу), ему немедленно выдается уведомление (всплывающее окошко на JavaScript).
Данную задачу можно решить двумя способами.
Dklab_multiplexor не претендует на полную универсальность или исключительность (кстати, если знаете аналоги, близкие по простоте к multiplexor-у, пишите в комментариях). Это лишь простейший инструмент, который наконец-то дошли руки опубликовать.
Зачем это нужно?
Предположим, посетители вашего сайта могут посылать друг другу сообщения. Если получатель в момент отправки находится на сайте (просматривает какую-либо страницу), ему немедленно выдается уведомление (всплывающее окошко на JavaScript).
Данную задачу можно решить двумя способами.
- Неправильный способ. Раз в 10 секунд делать из JavaScript запрос на сервер для проверки, не появилось ли новых сообщений. Этот метод не работает, если на сайте одновременно находится очень большое количество пользователей, т.к. нагрузка на сервер растет слишком быстро. Кроме того, потребление трафика пользователем также оказывается крайне высоким.
- Правильный способ. Устанавливать постоянное и длительное соединение с сервером, ожидая поступления данных через него. Если сообщений нет, соединение просто держится открытым на протяжение нескольких минут. Если соединение по каким-либо причинам закрылось, оно вновь открывается. В итоге и трафика потребляется мало, и нагрузка на сервер оказывается невелика. Так работает GMail, Мой Круг и т. д., и именно на этом принципе построен dklab_multiplexor.
+-------------------+ ------------------ | Сервер обработки | | | <===WAIT=== Клиент A | и базы данных | ======IN=======> | Мультиплексор | <===WAIT=== Клиент B | (e.g Apache + PHP | | | <===WAIT=== Клиент C +-------------------+ ------------------ (указаны направления установления TCP-соединений).
+91
Веб-аналитика: анализируй это! Часть 2. Сбор данных
5 min
18KПеред тем, как анализировать данные статистики, нужно понимать, как они были собраны, какие из них могут быть неточными, и почему.
Сервер в интернете получает от браузера пользователя запросы и отдает данные. На каждый просмотр страницы сервер получает один запрос (на тело страницы), а затем несколько дополнительных (картинки, скрипты, таблицы стилей и другие дополнительные данные для отображения страницы). Скрипты на странице также могут генерировать запросы к серверу — в том числе, к отдельному серверу статистики.
Сервер в интернете получает от браузера пользователя запросы и отдает данные. На каждый просмотр страницы сервер получает один запрос (на тело страницы), а затем несколько дополнительных (картинки, скрипты, таблицы стилей и другие дополнительные данные для отображения страницы). Скрипты на странице также могут генерировать запросы к серверу — в том числе, к отдельному серверу статистики.
+22
Веб-аналитика: анализируй это! Часть 3. Базовые метрики
4 min
22KПредыдущие части:
Часть 1. Вступление
Часть 2. Сбор данных
Пришло время поговорить о метриках — тех величинах, которые считает любая система статистики. Начнем с прямых метрик — тех, которые можно посчитать легко и без применения формул.
Часть 1. Вступление
Часть 2. Сбор данных
Пришло время поговорить о метриках — тех величинах, которые считает любая система статистики. Начнем с прямых метрик — тех, которые можно посчитать легко и без применения формул.
+28
Memcached. Как найти ключи по паттерну?
6 min
9.6KДоброе утро|день|вечер|ночь, %username%!
При использовании Memcached, иногда могут возникнуть вопросы: «А как посмотреть все ключи Memcached?» или «Как найти все ключи по маске „*“ или „sql_*“ ?»
Вот тогда открываются мануалы и начинается поиск такой функции, но, к сожалению, такой не оказывается :-(
Потом начинается Гугление… И там особо ничего нет :-(
А потом начинается поиск незадокументированных возможностей :-) и тут «Ура! Нашел!»
При использовании Memcached, иногда могут возникнуть вопросы: «А как посмотреть все ключи Memcached?» или «Как найти все ключи по маске „*“ или „sql_*“ ?»
Вот тогда открываются мануалы и начинается поиск такой функции, но, к сожалению, такой не оказывается :-(
Потом начинается Гугление… И там особо ничего нет :-(
А потом начинается поиск незадокументированных возможностей :-) и тут «Ура! Нашел!»
+16
CKEditor, TinyMCE файловый браузер (PHP)
3 min
9.8KВ продолжение, файловый браузер для CKEditor и TinyMCE, и просто для сайта.
Сборка имеет два скина: dark & light
Скриншоты кликабельны

Сборка имеет два скина: dark & light
Скриншоты кликабельны

+57
Текст любой ценой: DOCX и ODT
4 min
63KНедавно возникла задача получения чистого текста из различных форматов документооборота — будь-то документы Microsoft Word или PDF. Задача была выполнена даже с чуть более широким списком возможных входных данных. Итак, этой статьёй я открываю список публикаций о чтении текста из следующих типов файлов: DOC, DOCX, RTF, ODT и PDF — с помощью PHP без использования сторонних утилит.
+83
Где растут деньги (как мы зарабатываем на Клумбе)
6 min
59KКак и большинство людей, я долгое время не представлял, что в интернете можно зарабатывать. Два года назад пришел работать в интернет-компанию, и удивился — можно. К сожалению, про зарабатывание денег на интернет-проектах очень мало пишут. Людей, которые действительно зарабатывают в нашем интернете, мало, а зарабатывающих не на баннерах — единицы, и все молчат, как партизаны.
А время идет, опыт накапливается, хочется им делиться. Расскажу, как мы учимся зарабатывать на нашей Клумбе.

А время идет, опыт накапливается, хочется им делиться. Расскажу, как мы учимся зарабатывать на нашей Клумбе.

+104
Разгоняем Wordpress до скорости света
7 min
141KTranslation

Скорость и отказоустойчивость – одни из тех факторов, что неизменно влияют на популярность вашего ресурса, ведь даже с лучшим в мире контентом медленно работающий сайт будет раздражать читателей и рано или поздно вы их потеряете. В этой статье мы будем оптимизировать самый популярный блоговый движок — Wordpress, работающий на PHP. А заодно рассмотрим несколько общих моментов в оптимизации сайтов.
+49
Список полезных инструментов для php разработчика
10 min
150KTranslation
PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
+186
Continuous integration для php
9 min
14KЭту статью написал мой добрый приятель и бывший коллега fred, работающий в команде программистов над большим и сложным проектом, который должен работать 24х7. Если кто-то решит пригласить его на хабр — с удовольствием вышлю его email по хабрапочте. Пожелания и комментарии приветствуются, а я обязуюсь передавать ответы автора в меру своих возможностей.
Меня давно посещала мысль запустить CI-сервер для рабочего проекта. База модульных тестов уже достаточно внушительных размеров, а количество людей в проекте немного увеличилось. Можно было бы наблюдать за тем, как изменяется покрытие тестами кода и соблюдаются стандарты кодирования. И наказывать провинившихся. Шучу.
Некоторое время назад была прочитана книжка Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска и статья Quality Assurance Tools for PHP, которые и послужили отправной точкой.
Меня давно посещала мысль запустить CI-сервер для рабочего проекта. База модульных тестов уже достаточно внушительных размеров, а количество людей в проекте немного увеличилось. Можно было бы наблюдать за тем, как изменяется покрытие тестами кода и соблюдаются стандарты кодирования. И наказывать провинившихся. Шучу.
Некоторое время назад была прочитана книжка Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска и статья Quality Assurance Tools for PHP, которые и послужили отправной точкой.
+72
Реформал: сервис жив? Сервис будет жить!
3 min
9.8KВесь последний год о Реформале ничего не писал, хотя, можно сказать, есть повод. Мы выросли и уже совершенно по-взрослому делаем дело, не оглядываясь на многочисленные «дачётотутнето». Продвигающие свои сайты и пинающие чужие знают, о чем я говорю.
Reformal.ru – это сервис обратной связи, который позволяет понять, почему некто ушел с вашего проекта, отписался от рассылки и, к тому же, увел добрую половину пользователей. Подробно прочитать о проекте можно в моём первом топике.
За прошедший год из идеи, которая не давала спать по ночам, Реформал вырос во вполне самостоятельный коммерческий продукт, не только приносящий чувство выполненного перед молодостью долга, но и определённую прибыль.
В свете последних достижений не могу удержаться, чтобы не подвести итоги (читай: похвастаться) и не поделиться статистикой с любопытными (читай: похвастаться много).
Итак.

За прошедший год из идеи, которая не давала спать по ночам, Реформал вырос во вполне самостоятельный коммерческий продукт, не только приносящий чувство выполненного перед молодостью долга, но и определённую прибыль.
В свете последних достижений не могу удержаться, чтобы не подвести итоги (читай: похвастаться) и не поделиться статистикой с любопытными (читай: похвастаться много).
Итак.
+39
Никогда не говорите слово …, или регистрация в 2 щелчка мышью
4 min
3.5K
Люди не очень любят регистрироваться. Это же нужно (в общем случае) придумать логин и пароль, зайти в свою почту, дождаться письма, открыть его, перейти по ссылке активации аккаунта, а потом еще этот логин с паролем не забыть. Но ведь уже давно есть способ, с помощью которого все эти шаги не нужны. Более того, не нужно вообще ничего вводить с клавиатуры, 2 щелчка мышью и все, человек зарегистрирован.
+189
6 простых способов увеличения фрилансерской продуктивности
6 min
2.4KTranslation
Лучшее в фрилансерской работе это то, что вы свободны в создании вашего собственного графика и правил. Однако это может быть и плохим фактором. Без нормально структурированного офисного пространства многие фрилансеры в конце дня могут задуматься – куда же делось все их время. Может быть трудно получить максимальную пользу от всего рабочего дня. Чтобы помочь таким фрилансерам, мы хотим представить некоторые простые пути для увеличения продуктивности.
+28
Автоматическая загрузка файлов на Яндекс.Диск
4 min
26KПредлагаю вашему вниманию PHP скрипт автоматической загрузки файлов на сервис Яндекс.Диск. Скрипт прост до безобразия, достаточно передать ему в качестве параметров логин, пароль и путь к файлу и в результате он загрузит ваш файл на сервис и выдаст вам ссылку на него. Не знаю, сколько еще меня вместе с моими постами будет терпеть Яндекс, но все-таки приведу исходный код скрипта :)
+88
Хомяки вымирают
4 min
2.2KСегодня, участвуя в обсуждении одного хабратопика, я понял, что мне, в общем-то, и не нужен личный хостинг. Я им просто не пользуюсь, уже который год у меня там висит заглушка с ссылками на используемые мной интернет-сервисы и мои контактные данные, которая максимум раз в год/два меняет своё графическое представление. Уверен, что у большинства владельцев хостинга «под хомяки» такая же ситуация. А ведь причина не в лени, которая мешает сделать полноценную домашнюю страницу или портфолио или установить движок блога, и т.д. Причина в том, что в этом нет нужды, так как для всего этого есть проверенные и, в большинстве случаев, гораздо более удобные социальные сервисы!
+54
Работа с http через неблокируемые сокеты
7 min
9KПонадобилось сделать несколько параллельных http запросов на php. Интуиция подсказывала что делается это через неблокируемые сокеты. В интернете в общем то есть несколько готовых классов для работы с ними, но как всегда захотелось легкости и простоты, поэтому был срочно изобретен новый велосипед. Под катом чуть больше 100 строк кода с комментариями и пример использования.
+31
Information
- Rating
- Does not participate
- Location
- Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity