Рейтинг: 80
не верифицирован
Всего отзывов: 0
Опубликовал заданий: 3
  • Работ в портфолио: 40
  • Типовых услуг: 0
  • Работ на продажу: 0
Был на сайте:

Интеграция Ruby+PHP

Используемые навыки:

Описание

Допустим у нас есть ситуация, при которой во время какого-либо HTTP запроса необходимо сделать длительную операцию. Например, при добавлении пользователем комментария к статье отправить email уведомление её автору. В классической схеме взаимодействия (рис 7-1) мы вынуждены ждать завершения этой операции, чтобы уведомить пользователя. Получается что эта операция блокирует выполнение веб-приложения, а значит происходит потеря производительности. Да и пользователю приходится ждать лишнее время. Когда количество пользователей невелико - это не проблема, но в Highload проектах этот вопрос приобретает большое значение. Мы определились с задачей - вынести все ресурсоемкие задачи в фоновые процессы. Рассмотрим случай с хостингом и добавлением домена в веб-панели. Задачей будет выполнение скрипта на Ruby, который будет производить манипуляции с DNS зонами и перезагружать DNS сервис.

Теперь определимся с схемой работы. Клиентом очереди будет ZendFramework приложение, которое будет добавлять задачи в очередь (отправлять сообщения в очередь). Сервером (воркером) будет Ruby, который будет принимать сообщения из очереди и обрабатывать их.

Почему выбрана именно такая комбинация? ZF для клиента исторически сложился, а вот сервер на Ruby выбран, т.к. очень не хочется давать PHP права root, думаю многие админы меня поймут. Выбор очереди был сделан в пользу Starling, т.к. она основана на Memcached и использует его протокол (ну почти :-) ) и реализация на руби предельно проста.

Подробнее тут: http://zendframework.ru/articles/ruby-with-php-starling-zend-queue

Ссылки на примеры реализации

 zendframework.ru/articles/ruby-with-php-starling-z...

Презентация проекта

pic1677901.jpg

Оценили проект:

0