php 可以运行任务吗,php – 任务和做什么有什么区别?

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 19:35   1768   0

有两个区别:运行顺序和目的.

运行顺序 – 当您通过操作和runTasks运行某些任务时,优先级高于任务.所以运行顺序将由:

>所有这些都用高优先级(GearmanClient :: doHigh()或

GearmanClient :: doHighBackground())

>所有任务高优先级(GearmanClient :: addTaskHigh()或

GearmanClient :: addTaskHighBackground())

>所有做的都是正常的优先级

>所有任务具有正常优先级

>所有做的都是低优先级

>具有低优先级的所有任务

目的:

任务 – 将其用于简短的任务,当您不在乎完成或进度如何

做 – 用于复杂的工作或需要检查进度时.为此目的有GearmanJob::sendStatus():

worker.php

$worker = new GearmanWorker();

$worker->addServer();

$worker->addFunction("sleep13", array('MyWorker', 'sleep13'));

while ($worker->work());

class MyWorker {

public function sleep13($job) {

$data = unserialize($job->workload());

echo 'start ' . $data['id'] . PHP_EOL;

for($i = 0; $i < 13; $i++) {

sleep(1);

$job->sendStatus($i, 13);

}

echo 'done ' . $data['id'] . PHP_EOL;

}

}

client.php

$client = new GearmanClient();

$client->addServer();

// Run task

$job_handle = $client->doBackground("sleep13", serialize(array('id' => 'normal-1')));

// Check progress

$done = false;

do {

usleep(300);

$stat = $client->jobStatus($job_handle);

if (!$stat[0]) // the job is known so it is not done

$done = true;

echo "Running: " . ($stat[1] ? "true" : "false") . ", numerator: " . $stat[2] . ", denomintor: " . $stat[3] . "\n";

} while(!$done);

echo "done!\n";

$job_handle是字符串,所以你可以将它存储在某个地方,然后随时检查.

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP