php - 将多个变量传递给 Gearman 工作函数

标签 php gearman

如何将两个变量传递给同一个辅助函数?例如,假设我希望连接从客户端传递的两个字符串。我在一些示例代码中看到正在使用一个数组,但我无法让它工作。

<?php
$client= new GearmanClient();
$client->addServer();

$arguments = array(
      "string1" => "hey",
      "string2" => "there"
);
$client->addTask("string_concat", $arguments);
$client->runTasks();
?>

这告诉我这是一个无效的工作负载(我假设是因为它是一个正在传递的数组)。我应该如何传递它们 - 我应该为每个任务创建一个任务吗?

那如果我不能发送一个数组,我如何在worker函数中使用多个变量。我试过像 function 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"];
}
?>

执行此操作的最佳方法是什么?非常感谢!

最佳答案

你应该序列化它。

类似于:

$data = serialize( $array );
$client->addTask("string_concat", $data);

然后,您可以从您的 worker 中执行类似...

if (is_string($data) && $data = unserialize($workload)) {

} else {
 // Maybe throw Exception or something?
}

关于php - 将多个变量传递给 Gearman 工作函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8582125/

相关文章:

php - PDO 不调用一行的顺序

带空格的 PHP 货币格式

php - Wordpress - 查看其他人在未来安排的帖子需要什么功能?

PHP gearman worker 相当于 GO 吗?

php - 在 Gearman/PHP 和 YouTube 中使用 SSL

mysql - 如何缓存流行查询以避免出现斯塔德斯和空白结果

php - 如何在 Windows 操作系统上安装 gearman php 扩展?

php - 为什么单例在 PHP 环境下这么糟糕?

message-queue - 2015 年我可以围绕 Gearman 构建一个软件吗?

php - mysqli::get_result 有什么问题?