Когда вы просматриваете документы php gearman, я вижу, что есть задача и делаю, у обоих из них есть фоновые и нефонические, и у них также все высокие, низкие и нормальные.
Кто-нибудь может это прояснить? Я просто смущен этой разницей.
Когда вы просматриваете документы php gearman, я вижу, что есть задача и делаю, у обоих из них есть фоновые и нефонические, и у них также все высокие, низкие и нормальные.
Кто-нибудь может это прояснить? Я просто смущен этой разницей.
Существуют два отличия: порядок и назначение.
Порядок выполнения - когда вы запускаете некоторые задачи с помощью do и runTasks, тогда они имеют более высокий приоритет, чем задачи. Таким образом, выполняемый порядок будет:
Цель:
Задача - используйте это для коротких задач, когда вам все равно, когда они заканчиваются или как прогресс
Do - используйте это для сложной работы или когда вам нужно проверить прогресс. Для этой цели 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 - это строка, поэтому вы можете ее где-то сохранить, а затем проверить ее в любое время.
Хорошо, я сделал несколько исследований для вас, как я думал об этом тоже.
Если вы запустите команду, она сразу же запускается (отправляется на сервер заданий) http://www.php.net/manual/en/gearmanclient.donormal.php
Do
Запускает одну задачу и возвращает строковое представление результата. Согласитесь с форматом результата, до GearmanClient и GearmanWorker.
Задача: вы можете создать список из них, а затем запустить их Параллельно, когда вы GearmanClient:: Run().
http://www.php.net/manual/en/gearmanclient.addtask.php
Task
Добавляет задачу, которая должна выполняться параллельно с другими задачами. Вызовите этот метод для всех задач, которые будут выполняться параллельно, затем вызовите GearmanClient:: runTasks() для выполнения этой работы. Обратите внимание: достаточное количество работников должно быть доступно для всех задач, выполняемых параллельно.