Распространение РНР

Распространение РНР

288
ПОДЕЛИТЬСЯ

Придет день, и вы поймете, что один поток в PHP вы незначительно.
И когда вы решите покинуть этот процесс и стали захлебываться в БТД способ exec AH и сигналов, вы будете знать, что не брать. И, в конце концов, от всей данной попсовой, вы будете плыть на полуостров мать (направленное на обработку Сообщений промежуточное). Поглядите на phthreads, но опосля java параллелизм чувствуете, что Вас “кинули”. Поначалу вы optimizerwhich код, потом испытать поменять разумы реагируют на асинхронные , но и весь мир РНР не желает осознать этого желания.
Но есть маленькая неувязка — шаг в сторону и, Эй, сейчас ты посреди толпы нытиков на stackoverflow в поисках обходных путей и странноватые схемы. И все вещи отличные: все фаворитные, скорые, надежные. И это будет длиться до тех пор, пока вы отыскать механизм zeromq. Оооо, а вот торговцы Кирби лишь нет: в rabbitmq, ActiveMQ, Кафка, Пустельга и даже redis в паб/саб’Ohm podbrasyvaet.
Механизм zeromq-это высокопроизводительные асинхронные сообщения-направленная библиотека, направленные на внедрение в масштабируемых распределенных либо параллельных приложениях. Но в отличие от остальных, нацеленных на сообщения midleware она besprekorna и работает без сервера, как такового. И что это?

И в чем предложение то? И предложить сиим ребятам набор сокеты на стероидах оптимизирована под главные шаблоны сообщений и применять их мы можем желать. С их помощью мы можем строить сеть хоть какой топологии и трудности.
Еще у их есть свой Док sechanska http://zguide.zeromq.org/page:all. Ну наборы мозги в правильном направлении независимо от того, на внедрение 0mq либо нет, правда, раз вы сможете в многопоточное программирование может быть отчасти прокручивается.

В нижней строке:

Набор стероид розетки
Катастрофически стремительная
Работать через IPC,TCP и многоадресной рассылки, приложения inproc
Асинхронный
Легкий старт
Неотклонимым для наиболее чем 40 языков программирования

Все это звучит чрезвычайно круто! Довольно теории, давайте идти на www.gliffy.com и яростно architekturen системы. И мы желаем в последующем:

Двиг + генератор задач
Авторизация на сервере и раздает нон-стоп задачку на парсинг.
Разбор работник
Получает ключ авторизации и задачки для разбора опосля завершения возвращает итог в генератор.
Анализируемые данные издателя
Получив итог от работника, publicit его всем подписчикам.
Системы оповещения абонента
Извлекает данные и посылает оповещения в случае необходимости.
Загрузить абонент системы
Приобретает данные и заливает их на сервер.
Загрузка данных работника
Закодированные, sibuet и uploadit данных на сервер.
Системный монитор
Собирает система статистики в настоящем времени.

Архитектура вышла незамудреная, все ингредиенты были написаны раздельно от бизнес-логики, оформленные в пакет для композитора и capablity на github:
https://github.com/limitium/zmq

До нуля, для вас необходимо (к примеру в Debian):
Установить Механизм Zeromq
суда apt-получить обновление-QQ в
судо кв-получить установку-у libzmq3-дев 1.
Установить неотклонимые для PHP-zmq
git клон https://github.com/mkoppanen/php-zmq.git
ш-с», компакт-диск с PHP-zmq && phpize && ./настроить && сделать —молчит && суда make Install»(установить)
Эхо «расширение=zmq.так» >> `в PHP —ini в | грэп «загружена Конфигурация» | СЭД-Е «С|.*:с*||»` 2.
3. Лееб установить через Composer
композитор просит limitium/zmq
Потом взять, к примеру, ПСР-3 регистратора и поглядите, как он работает:
Регистратор
$регистратор = новейший ZLogger(‘my_service_1’, ‘протокол TCP://127.0.0.1:5555’);
$регистратор->информация(«ядро стабилизировано»);
$регистратор->аварийной ситуации(«мы все умрем!»);

Сборщик логов
(новейший концентратор(‘протокол TCP://127.0.0.1:5555’))
->его setreceiver(функция ($logMsg) {
$имя_службы = $logMsg[0];
$время = $logMsg[1];
$мышиloglevel = $logMsg[2];
$logMsg = $logMsg[3];
})
->слушать();

Это обычный, регистратор булочки с механизм zeromq может выполняться в одном процессе, и собрать информацию из 100500 серверов.
Пример задач генератора и работник
Генератор
(новейший вентилятор(‘протокол TCP://127.0.0.1:5555’))
->setGenerator(функция () {
сна(1);
возвращение Ранд();
})
->setResponder(функция ($мсг) {
Эхо $мсг;
})
->слушать();

Работник
(новейший работник(‘протокол TCP://127.0.0.1:5555’))
->setExecutor(функция ($мсг) {
вернуть $мсг + $мсг;
})
->работа();
И в конце очевидный паб/саб
Издатель
$паб = новейший Издатель(‘протокол TCP://127.0.0.1:5555’);
$паб->выслать(‘azaza’);

Абонент
(новейший Абонент(‘протокол TCP://127.0.0.1:5555’))
->setListener(функция ($мсг){
Эхо $мсг;
})
->слушать();
habrahabr.ru Единственный минус механизм zeromq, говоря уже о наиболее предприятиямис целью желаете от системы, тем больше придется писать код. Но кого это тревожит, когда все это начинается в 2 строчки кода?