gearman 에서 작업 의 우선 순위 와 반환 상태 인 스 턴 스 분석
gearman 에서 작업 의 우선 순위 와 복귀 상태
1.퀘 스 트 의 우선 순위
동기 화 블록 호출,결 과 를 기다 리 고 있 습 니 다.
doLow:
doNomal:
doHigh:
비동기 전송 작업 은 결 과 를 기다 리 지 않 고 작업 핸들 을 되 돌려 줍 니 다.이 핸들 을 통 해 작업 실행 상태 정 보 를 얻 을 수 있 습 니 다.
doLowBackground
doBackground
doHighBackground
Task 와 doXXX 의 차 이 를 주의 하 십시오.Task 는 하나의 job 입 니 다.발송 후 여러 worker 에 배정 되 어 병행 하여 실행 하고 결 과 를 호출 자 에 게 되 돌려 줍 니 다.doXXX 의 모든 임 무 는 하나의 worker 에서 만 실 행 됩 니 다.
addTaskLow
addTask
addTaskHigh
addTaskLowBackground
addTaskBackground
addTaskHighBackground
cli.php 코드 는 다음 과 같 습 니 다.
<?php
$client = new GearmanClient();
$client->addServer('127.0.0.1', 4730);
$client->setCompleteCallback(function($task) {
echo $task->data(), PHP_EOL;
});
// Task
$client->addTaskLow('sum', json_encode(array(100, 100)));
$client->addTask('sum', json_encode(array(200, 200)));
$client->addTaskHigh('sum', json_encode(array(300, 300)));
$client->runTasks();
worker.php 코드 는 다음 과 같 습 니 다.
<?php
$worker = new GearmanWorker();
$worker->addServer('127.0.0.1', 4730);
$worker->addFunction('sum', function($job) {
$data = json_decode($job->workload(), true);
$ret = $data[0] + $data[1];
echo $ret, PHP_EOL;
sleep(1);
return $ret;
});
while($worker->work());
실험 효 과 를 위해 서 워 커 는 하나만 시작 하면 됩 니 다.2.퀘 스 트 획득 상태
cli.php 코드 는 다음 과 같 습 니 다.
<?php
$client = new GearmanClient();
$client->addServer('127.0.0.1', 4730);
//
$client->setCreatedCallback('reverse_create');
//
$client->setDataCallback('reverse_data');
//
$client->setStatusCallback('reverse_status');
//
$client->setCompleteCallback('reverse_complete');
//
$client->setFailCallback('reverse_fail');
// Task
$client->addTaskLow('reverse', '1234567');
$client->addTask('reverse', 'hello');
$client->addTaskHigh('reverse', 'world');
$client->runTasks();
function reverse_create($task) {
echo ' (', $task->jobHandle() , '): ', PHP_EOL;
}
function reverse_data($task) {
echo ' (', $task->jobHandle() , '): ', $task->data(), PHP_EOL;
}
function reverse_status($task) {
//taskNumerator()
//taskDenominator()
echo ' (', $task->jobHandle() , '): ', $task->taskNumerator(), '/', $task->taskDenominator(), PHP_EOL;
}
function reverse_complete($task) {
echo ' (', $task->jobHandle() , '): ', $task->data(), PHP_EOL;
}
function reverse_fail($task) {
echo ' (', $task->jobHandle() , '): ', PHP_EOL;
}
worker.php 코드 는 다음 과 같 습 니 다.
<?php
$worker = new GearmanWorker();
$worker->addServer('127.0.0.1', 4730);
$worker->addFunction('reverse', function($job) {
//workload()
$data = $job->workload();
//workloadSize()
$dataSize = $job->workloadSize();
echo "worker: {$data} ({$dataSize})
";
$tmp = 0;
$mid = $dataSize / 2;
for($ix = 0; $ix < $mid; ++$ix) {
$tmp = $data[$ix];
$data[$ix] = $data[$dataSize - $ix - 1];
$data[$dataSize - $ix - 1] = $tmp;
// , client reverse_status()
//
$job->sendStatus($ix + 1, $mid + 1);
// , reverse_data()
$job->sendData($data);
sleep(1);
}
return $data;
});
while($worker->work());
실행 결 과 는 다음 과 같 습 니 다.더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
TrelloAPI 로그인 카드 사용임무 관리 귀찮죠? 트리로 쓰고 있어요. 카드에 정보를 첨부하면 매우 편리하다. 파일의 경로와 ZOOM의 링크 등을 연결하면 정보를 종합할 수 있어 매우 편리하다. 명령줄에서 임무를 등록하고 싶습니다.그래서 나는 불...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.