Каков правильный способ настройки и использования php-resque?

Я пытаюсь использовать phpresque для очереди и выполнять преобразования ffmpeg на моем сервере. Я широко понимаю, как это должно работать, но у меня возникают проблемы с деталями и я не могу найти никаких учебников. В частности, я не понимаю, где я должен размещать свои классы работы, и как давать классы моим работникам и начинать своих работников. В прочитанном мне сказано: «Приступая к выполнению своей заявки, вы также рассказываете работнику о своих классах работы с помощью автозагрузчика или включая их».

Надеюсь, кто-то может описать общую структуру использования php-resque.

Solutions Collecting From Web of "Каков правильный способ настройки и использования php-resque?"

Вы можете поместить свои классы работы там, где хотите. Это будет зависеть от вашей структуры приложения.

Как создать класс работы

Например, предположим, что класс VideoConversion используется для преобразования ffmpeg.

 class VideoConversion { public function perform() { // The code for video conversion here } } 

В вашем основном приложении перед использованием php-resque, допустим, у вас есть что-то подобное

 public function uploadVideo() { // Upload and move the video to a temp folder // Convert the video } 

И вы хотите вставить в очередь часть «конвертировать видео». Давайте просто поставим очередь в очередь convert :

 public function uploadVideo() { // Upload and move the video to a temp folder // Let's suppose you need to convert a 'source video' to a 'destination video' Resque::enqueue('convert', 'VideoConversion', array('origine-video.avi', 'destination-video.avi')); } 

При очередности задания мы передали путь к исходному и целевому видео в класс VideoConversion. Вы можете передать другой аргумент, это будет зависеть от того, как написан ваш класс VideoConversion.

Затем рабочий VideoConversion очередь convert и выполнит задание VideoConversion . То, что рабочий сделает, это создать экземпляр класса VideoConversion и выполнить метод perform() .

Аргументы задания ( array('origine-video.avi', 'destination-video.avi') ), третий аргумент при очередности задания с помощью Resque::enqueue , будут доступны внутри метода perform() через $this->args .

 # VideoConversion.php class VideoConversion { public function perform() { // $this->args == array('origine-video.avi', 'destination-video.avi'); // Convert the video } 

Найдите свои классы работы

Класс VideoConversion можно поместить в любом месте, но вы должны сообщить своим работникам, где его найти. Существует несколько способов сделать это

Поместите классы заданий в include_path

В вашем .htaccess или config apache добавьте каталог, содержащий все ваши классы заданий, в путь include. Ваши работники автоматически найдут их.

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

Расскажите каждому работнику, где найти свои классы работы

При запуске работника используйте аргумент APP_INCLUDE чтобы указать на автозагрузчик классов заданий.

 APP_INCLUDE=/path/to/autoloader.php QUEUE=convert php resque.php 

Вышеупомянутая команда запустит нового рабочего, опросив очередь с именем convert . Мы также передаем файл /path/to/autoloader.php рабочему. ( см. здесь, чтобы научиться начинать работника )

Технически рабочий будет включать этот файл с include '/path/to/autoloader.php'; ,

Затем вы можете сообщить работникам, как найти свои классы работы:

Использовать основные

В '/path/to/autoloader.php':

 include /path/to/VideoConversion.php include /path/to/anotherClass.php ... 

Использовать автозагрузчик

Используйте автозагрузчик php для загрузки классов заданий.

Использовать set_include_path()

 set_include_path('path/to/job'); 

Таким образом, ваши рабочие места находятся в include_path только для этого рабочего.

Закрытие мысли

APP_INCLUDE к работнику, с которого вы начинаете. Если вы начинаете другого работника, снова используйте APP_INCLUDE . Вы можете использовать другой файл для каждого рабочего.

Вы также можете создавать свои классы заданий для выполнения нескольких заданий. Есть учебник, объясняющий, как это сделать. Он охватывает от базовой системы очереди до того, как ее использовать и внедрять.

Если этого еще недостаточно, взгляните на документацию resque. API-интерфейс php-resque точно такой же. Единственное отличие состоит в том, что классы задания Resque написаны в Ruby, а php-resque – в php.

Привет, пожалуйста, ознакомьтесь с следующим руководством по использованию resque с phalcon. http://www.mehuldoshi.in/background-jobs-phalcon-resque/