나는 콩 줄기 + 대장간에 중급입니다. Beanstalk을 사용하여 핵심 부분 (백그라운드 프로세스)을 개발 중입니다. 그것은 의심의 여지가 훌륭한 도구이지만, 나는 한 가지 상황에 처해있다. 나는 Yii 프레임 워크를 사용하여 beanstalk를 사용하고 있습니다.콩 줄기 + Pheanstalk 지연 기존 일
예를 들어 A (Tube-A-Jobs)와 B (Tube-B-Jobs)의 두 가지 직업이 있으며 두 가지 직업이 서로 다른 관과 근로자를두고 있습니다. B는 A에 종속되어 있습니다. B가 A 이전의 작업자에 의해 먼저 페치 (fetch)되고 A에서 처리가 시작될 수 있습니다. 이 경우 A가 실행될 때까지 몇 초 (120 초) 동안 지연하려면 B가 필요합니다.
제 생각에 따라 직무를 지연시키는 직접적인 방법은 없습니다. 이를 위해서는 작업 B를 삭제하고 지연 시간이있는 같은 대기열에 다시 넣어야합니다. 내가 틀렸다면 나를 바로 잡아라.
그런 상황에서 나는 실제 튜브 이름을 얻을 수 없다. 왜냐하면 pheanstalk은 작업 ID와 작업 데이터만을 제공하기 때문이다. 내가 예약 기능을 사용하여 모든 작업을 가지고 있다면 나는
$jobB = $pheanstalkB->reserve();
그것은 다음과 같이 출력을 줄 것이다, 지금 당신이 아래에있는 내 코드,
$pheanstalkA = Yii::app()->beanstalk->getClient($client);
$pheanstalkA->watch('A-tube');
$pheanstalkB = Yii::app()->beanstalk->getClient($client);
$pheanstalkB->watch('B-tube');
을 붙여있어, 우리는 그 콩나무가 아닌 볼 수 있습니다 이 직업을 가져온 튜브 이름을 제공합니다.
Pheanstalk_Job Object
(
[_id:Pheanstalk_Job:private] => 2
[_data:Pheanstalk_Job:private] => Job Data ....
)
우리는 내가이 일을 지연 할 시간과 같은 튜브 아래에 넣고 싶다면, 하나의 노동자, N 튜브 (들)에서 볼 수 있다는 것을 알고있다. 어떻게 우리는 직업의 튜브 이름을 찾을 수 있습니까?
감사합니다 ...
고마워 Alister .. 대단한 도움 !! –