Как передать две переменные одной и той же рабочей функции? Например, скажем, я хотел конкатрировать две строки, которые я передаю от клиента. Я видел в некотором примере код используемый массив, но я не могу заставить его работать.Передача нескольких переменных рабочей функции Gearman
<?php
$client= new GearmanClient();
$client->addServer();
$arguments = array(
"string1" => "hey",
"string2" => "there"
);
$client->addTask("string_concat", $arguments);
$client->runTasks();
?>
Это говорит мне, что это некорректная рабочая нагрузка (я предполагаю, что это массив, который передается). Как я должен их передавать - должен ли я создать задачу для каждого?
Тогда, если я не могу отправить массив, как я могу использовать несколько переменных в рабочей функции. Я пробовал как функцию String_Concat ($ job, $ job2), но тогда я не уверен, как добавить их в рабочую нагрузку()
Вот пример кода, если мне удалось передать массивы:
<?php
$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction("string_concat", "String_Concat");
while ($worker->work());
function String_Concat($job)
{
$arguments = $job->workload();
return $arguments["string1"] . $arguments["string2"];
}
?>
Каков наилучший способ для этого? Большое спасибо!
ах - я не знал об этом сериализации! Большое спасибо Layke, мне удалось заставить его работать с: $ data = $ job-> workload(); if (is_string ($ data) && $ data = unserialize ($ data)) {$ var1 = $ data ["string1"]. $ данных [ "string2"]; print $ var1; Приветствия! Изменить: не удается заставить форматирование кода работать - извините за зрение. – Jingo
Документы PHP для Gearman * do * упоминают сериализацию при отправке данных и для получения данных от работника, где данные не являются строкой, НО они не дают любые примеры :-) – Eno