[英]What is the proper way to setup and use php-resque?
我正在嘗試使用php-resque在我的服務器上排隊並執行ffmpeg轉換。 我廣泛理解它應該如何工作,但我在細節方面有些麻煩,找不到任何教程。 具體來說,我不明白我應該在哪里上課,以及如何將課程交給我的工人並開始我的工作。 我讀到的只是說“讓你的應用程序正在進行中,還包括通過自動加載器或包括它們告訴工人你的工作類。”
希望有人可以概述使用php-resque的整體結構。
你可以把你的工作班放在你想要的地方。 這取決於您的應用程序結構。
例如,假設用於ffmpeg轉換的類VideoConversion
。
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
它排隊到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類的編寫方式。
然后,工作人員將輪詢convert
隊列,並執行VideoConversion
作業。 工作人員將做的是實例化VideoConversion類,並執行perform()
方法。
作業參數( array('origine-video.avi', 'destination-video.avi')
),使用Resque::enqueue
排隊作業時的第三個參數,將通過$this->args
在perform()
方法中可用$this->args
。
# VideoConversion.php
class VideoConversion
{
public function perform() {
// $this->args == array('origine-video.avi', 'destination-video.avi');
// Convert the video
}
VideoConversion
類可以放在任何地方,但你必須告訴你的工人在哪里找到它。 有多種方法可以做到這一點
在.htaccess或apache配置中,將包含所有作業類的目錄添加到包含路徑。 您的員工會自動找到他們。
此方法的主要問題是所有作業類必須位於同一文件夾中,並且所有作業類都可在任何位置使用。
啟動worker時,使用APP_INCLUDE
參數指向作業類的“autoloader”。
APP_INCLUDE=/path/to/autoloader.php QUEUE=convert php resque.php
上面的命令將啟動一個新的worker,輪詢名為convert
的隊列。 我們還將文件/path/to/autoloader.php傳遞給worker。 ( 見這里學習創辦工人 )
從技術上講,工作人員將包含該文件include '/path/to/autoloader.php';
。
然后,您可以告訴工人如何找到您的工作類:
使用基本包含
在'/path/to/autoloader.php'中:
include /path/to/VideoConversion.php
include /path/to/anotherClass.php
...
使用自動加載器
使用php autoloader加載你的工作類。
使用set_include_path()
set_include_path('path/to/job');
這樣,你的工作就在這個工人的include_path
。
APP_INCLUDE
綁定到您正在啟動的工作人員。 如果您正在啟動另一個工作人員, APP_INCLUDE
再次使用APP_INCLUDE
。 您可以為每個工作人員使用不同的文件。
您還可以設計工作類以執行多個作業。 有一個教程解釋如何做到這一點。 它涵蓋了從隊列系統的基礎到如何使用和實現它。
如果仍然不夠,請查看resque文檔。 php-resque API完全相同。 唯一的區別是Resque工作類是用Ruby編寫的,而php-resque是用PHP編寫的。
嗨請查看以下教程,了解如何使用phalcon resque。 http://www.mehuldoshi.in/background-jobs-phalcon-resque/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.