2017-09-20 3 views
0

사용자를 위해 내 서버에서 시간 계산 서비스를 제공합니다. 이 계산 작업을 작업 큐에 넣었습니다. 따라서 사용자를 기다리는 작업 수를 표시해야합니다. 래 러브 대기열에서 특정 작업 전에 얼마나 많은 작업을 얻을 수있는 방법을 찾을 수는 없습니다. 나는 빈 줄을 대기열로 사용했다.laravel 큐에서 특정 작업 전에 작업 수 얻기

답변

1

'How can I get a list of all jobs in a beanstalk tube?'대답과 마찬가지로 Beanstalkd는 배열이 아닙니다. 다음 작업을 수행하기 위해 검색되거나 카운트되도록 설계되지 않았습니다.

대기열에있는 작업 수와 대기열에있는 위치를 보려면 다른 데이터 저장소 (예 : Redis 또는 memcached)에 메모하십시오. 대기열에 작업을 넣을 때 항목을 만들고 Beanstalkd에서 작업이 삭제되면 제거하십시오. 주 -이 '순서'또는 '순서'는 모든 작업이 동일한 우선 순위를 갖고 두 시스템을 완벽하게 동기화하는 경우에만 유효합니다.

더 합리적으로 할 수있는 일은 대기열 (또는 특정 튜브/대기열)에있는 작업의 총 수를 취하고, 작업이 취해야하는 시간 내에 대체로 비슷하다면 그것이 완료 될 때까지 새로운 일 (또는 당신이 방금 들여 놓은 새로운 일)이 걸릴 때까지 얼마나 걸릴지에 대한 견적.

createdAt 시간이있는 특수 작업으로 ETA를 계산할 수 있으며 실행하면 대기열 (now-createdTime)에서 가져온 시간을 외부 저장소로 업데이트합니다.