PHP.mk документација

GearmanClient::do

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

gearmanclient.do.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека gearmanclient.do.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
GearmanClient::do

Референца за `gearmanclient.do.php` со подобрена типографија и навигација.

gearmanclient.do.php

GearmanClient::do

(PECL gearman >= 0.5.0)

GearmanClient::do(PECL gearman >= 0.5.0)

= NULL

public GearmanClient::do(string $function_name, string $workload, string $unique = ?): string

На Изврши една задача и врати резултат [застарено] методот е застарен од pecl/gearman 1.0.0. Користи Стартирај една задача и врати резултат [застарено].

Параметри

function_name
GearmanClient::do()
workload
Регистрирана функција што работникот треба да ја изврши
unique
Серијализирани податоци за обработка

Вратени вредности

Уникатен ID што се користи за идентификување на одредена задача

Примери

Низка што ги претставува резултатите од извршувањето на задачата.

<?php

# Client code

echo "Starting\n";

# Create our client object.
$gmclient= new GearmanClient();

# Add default server (localhost).
$gmclient->addServer();

echo
"Sending job\n";

$result = $gmclient->doNormal("reverse", "Hello!");

echo
"Success: $result\n";

?>
<?php

echo "Starting\n";

# Create our worker object.
$gmworker= new GearmanWorker();

# Add default server (localhost).
$gmworker->addServer();

# Register function "reverse" with the server. Change the worker function to
# "reverse_fn_fast" for a faster worker with no output.
$gmworker->addFunction("reverse", "reverse_fn");

print
"Waiting for job...\n";
while(
$gmworker->work())
{
if (
$gmworker->returnCode() != GEARMAN_SUCCESS)
{
echo
"return_code: " . $gmworker->returnCode() . "\n";
break;
}
}

function
reverse_fn($job)
{
return
strrev($job->workload());
}

?>

Горниот пример ќе прикаже нешто слично на:

Starting
Sending job
Success: !olleH

Пример #1 Едноставно поднесување на задача со непосредно враќање

Пример #2 Поднесување на задача и добивање на инкрементален статус Изврши една задача и врати резултат [застарено] Се поднесува задача и скриптата се врти за да добие информации за статусот. Работникот има вештачко задоцнување што резултира со долготрајна задача и испраќа статус и податоци додека се одвива обработката. Секое последователно повикување на

<?php

# Client code

# Create our client object.
$gmclient= new GearmanClient();

# Add default server (localhost).
$gmclient->addServer();

echo
"Sending job\n";

# Send reverse job
do
{
$result = $gmclient->doNormal("reverse", "Hello!");
# Check for various return packets and errors.

switch($gmclient->returnCode())
{
case
GEARMAN_WORK_DATA:
echo
"Data: $result\n";
break;
case
GEARMAN_WORK_STATUS:
list(
$numerator, $denominator)= $gmclient->doStatus();
echo
"Status: $numerator/$denominator complete\n";
break;
case
GEARMAN_WORK_FAIL:
echo
"Failed\n";
exit;
case
GEARMAN_SUCCESS:
break;
default:
echo
"RET: " . $gmclient->returnCode() . "\n";
echo
"Error: " . $gmclient->error() . "\n";
echo
"Errno: " . $gmclient->getErrno() . "\n";
exit;
}
}
while(
$gmclient->returnCode() != GEARMAN_SUCCESS);

echo
"Success: $result\n";

?>
<?php

# Worker code

echo "Starting\n";

# Create our worker object.
$gmworker= new GearmanWorker();

# Add default server (localhost).
$gmworker->addServer();

# Register function "reverse" with the server.
$gmworker->addFunction("reverse", "reverse_fn");

print
"Waiting for job...\n";
while(
$gmworker->work())
{
if (
$gmworker->returnCode() != GEARMAN_SUCCESS)
{
echo
"return_code: " . $gmworker->returnCode() . "\n";
break;
}
}

function
reverse_fn($job)
{
echo
"Received job: " . $job->handle() . "\n";

$workload = $job->workload();
$workload_size = $job->workloadSize();

echo
"Workload: $workload ($workload_size)\n";

# This status loop is not needed, just showing how it works
for ($x= 0; $x < $workload_size; $x++)
{
echo
"Sending status: " + $x + 1 . "/$workload_size complete\n";
$job->sendStatus($x+1, $workload_size);
$job->sendData(substr($workload, $x, 1));
sleep(1);
}

$result= strrev($workload);
echo
"Result: $result\n";

# Return what we want to send back to the client.
return $result;
}

?>

Горниот пример ќе прикаже нешто слично на:

произведува информации за статусот на тековната задача.

Starting
Waiting for job...
Received job: H:foo.local:106
Workload: Hello! (6)
1/6 complete
2/6 complete
3/6 complete
4/6 complete
5/6 complete
6/6 complete
Result: !olleH

Излез на работникот:

Starting
Sending job
Status: 1/6 complete
Data: H
Status: 2/6 complete
Data: e
Status: 3/6 complete
Data: l
Status: 4/6 complete
Data: l
Status: 5/6 complete
Data: o
Status: 6/6 complete
Data: !
Success: !olleH

Види Исто така

Белешки од корисници 1 белешка

Шејн Хартер
пред 15 години
Note that this isn't blocking -- that do() will return as soon as the job is accepted by the Gearman jobserver. 

That lets you do..while until the return code is success or failure as you see in the examples.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.