有没有人试过并成功在MAMP上安装gearman扩展?我试图在MAC OS X 10.6.8上的MAMP 2.x上进行
我目前正在将我们的网页视频转换部分(有点像youtube用户上传视频,我们将它们转换为flv/mp4)分离到另一台服务器.我已经在同一台机器上使用gearman运行系统.因此,当用户将视频文件上传到服务器A时,由同一服务器A上的齿轮工人挑选.
现在我将工作人员移动到服务器B.因此服务器B上的工作人员需要访问服务器A上的上传文件.目前我使用SCP将文件从A复制到B然后处理它.这种方法有效,但我觉得应该有一个更干净的方法,但我没有找到任何有关向齿轮工人发送文件(或大文件)的信息.你会如何解决这个问题?
优选地,客户端将视频文件作为命令的一部分发送以启动后台作业,因此我不必担心文件实际来自工作者的位置.这样我就可以添加更多转换服务器而不会有太多麻烦.
我正在为我的网页和工作人员使用PHP(带有Gearman 扩展名).
给定这一行代码来回调函数和回调函数本身:
Class MyClass {
public function doThings() {
$this->gearman->client->setCompleteCallback("workerCompleted");
}
public function workerCompleted() {
echo "worker is completed!";
}
}
Run Code Online (Sandbox Code Playgroud)
我明白了 Message: GearmanClient::setCompleteCallback(): function workerCompleted is not callable
该setCompleteCallback方法需要引号中的函数名称,但如何调用类方法?$this->"workerCompleted"显然是错的.
没有任何示例显示如何使用PHP中的Gearman.一个典型的就是这样
**CLIENT**
<?php
$client= new GearmanClient();
$client->addServer();
print $client->do("revit", "AlL THE World's a sTagE");
print "\n";
?>
**SERVER**
<?php
$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction("revit", "rev_it");
while ($worker->work());
function rev_it($job)
{
return strrev($job->workload());
}
?>
Run Code Online (Sandbox Code Playgroud)
我在我的64位CentOS服务器上安装了Gearmand和PECL PHP扩展,编写了这些脚本,确保Gearmand运行然后浏览到客户端.浏览器等了....
我完全预料到这一点,因为我认为Gearman服务器需要以某种方式知道它应该在收到适当的客户端请求时执行该特定的工作脚本.
我打开另一个选项卡并浏览到工作脚本,并立即在客户端脚本选项卡中找回响应.
这里似乎缺少一个链接.当一个人写一个工作脚本时,它不是必须在Gearman服务器上注册,所以后者知道用它来服务某些客户端吗?
要么我一直在谷歌搜索错误的东西,否则所有那些"如何在PHP中使用Gearman"的例子都会遗漏一些东西.有人可以帮忙吗?
启动,重启和停止的命令是什么gearman?
到目前为止,我知道:
gearadmin --shutdown # stop
gearmand -d # I believe it is to restart. Not sure.
Run Code Online (Sandbox Code Playgroud)
管理的任何想法gearman?
我目前需要设置运行 php7.2 的新服务器,该服务器将有许多后台进程用于向客户发送电子邮件。我得到的建议是使用 Gearman Job Server。我一直在搜索,但似乎只发布了有关 php5 及以下版本的 gearman-job-server 的帖子。