我是Beanstalk + Pheanstalk中的中間人。我正在使用Beanstalk開發我的核心部分(後臺進程)。毫無疑問,這是一款出色的工具,但我陷入了一種情況。我正在使用使用Yii框架的beanstalk。假設我有兩個工作A(Tube-A-Jobs)和B(Tube-B-Jobs),兩者都在不同的管子和工人身上。 B依賴於A. B可能會在A之前由工作人員首先獲取並且將開始處理。在這種情況下,我需要B延遲幾秒(120秒),直到A執行。Beanstalk + Pheanstalk延遲現有作業
據我所知,沒有任何直接的方式來延遲工作。爲此,您需要刪除作業B,並使用延遲時間返回到同一隊列。如果我在這裏錯了,請糾正我。
現在的情況是,我無法獲得實際的管名稱,因爲pheanstalk只提供作業ID和作業數據。我貼你我下面的代碼,
$pheanstalkA = Yii::app()->beanstalk->getClient($client);
$pheanstalkA->watch('A-tube');
$pheanstalkB = Yii::app()->beanstalk->getClient($client);
$pheanstalkB->watch('B-tube');
現在,如果我使用儲備功能有任何工作,
$jobB = $pheanstalkB->reserve();
它會給你如下輸出,我們可以看到,魔豆是不是提供它從中獲取這份工作的管名。
Pheanstalk_Job Object
(
[_id:Pheanstalk_Job:private] => 2
[_data:Pheanstalk_Job:private] => Job Data ....
)
我們知道,一個工人可以以N管(S)看,所以如果我想拖延這項工作,並希望在同一試管中放。我們如何找到工作的管子名稱?
謝謝...
謝謝阿利斯特..偉大的幫助! –