Gearman GearmanClient::addTaskStatus
(PECL gearman >= 0.5.0)
GearmanClient::addTaskStatus — 상태를 가져오는 작업 추가
설명
public GearmanClient::addTaskStatus(string $job_handle
, string &$context
= ?): GearmanTask
지정된 상태 콜백(GearmanClient::setStatusCallback()을 사용하여 설정)을 호출하는 Gearman 서버에서 상태 정보를 요청하는 데 사용됩니다.
매개변수
job_handle
- 상태를 가져올 작업의 작업 핸들
context
- 상태 콜백에 전달할 데이터, 일반적으로 배열 또는 객체에 대한 참조
반환 값
GearmanTask 개체.
Examples
예제 #1 여러 백그라운드 작업 완료 모니터링
장기 실행 프로세스를 시뮬레이션하기 위해 이 예에서 작업자에 인위적인 지연이 도입되었습니다. 이 예에서는 작업자가 하나만 실행됩니다.
<?php
/* create our object */
$gmclient= new GearmanClient();
/* add the default server */
$gmclient->addServer();
/* start some background jobs and save the handles */
$handles = array();
$handles[0] = $gmclient->doBackground("reverse", "Hello World!");
$handles[1] = $gmclient->doBackground("reverse", "!dlroW olleH");
$gmclient->setStatusCallback("reverse_status");
/* Poll the server to see when those background jobs finish; */
/* a better method would be to use event callbacks */
do
{
/* Use the context variable to track how many tasks have completed */
$done = 0;
$gmclient->addTaskStatus($handles[0], &$done);
$gmclient->addTaskStatus($handles[1], &$done);
$gmclient->runTasks();
echo "Done: $done\n";
sleep(1);
}
while ($done != 2);
function reverse_status($task, $done)
{
if (!$task->isKnown())
$done++;
}
?>
위의 예는 다음과 유사한 결과를 출력합니다.
Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 2
기타
- GearmanClient::setStatusCallback() - 작업 상태 수집을 위한 콜백 설정