如何在PHP应用程序中使用Net_G专项



我有一个PHP应用程序,我想在其中使用Gearman来完成耗时的任务。我搜索了很多,发现Net_G专项作为PHP API,包含客户端和工作者类。

我接下来应该做什么才能使用Net_G专项?我对Linux和Perl一无所知。

一些事情可以让你上路(我使用了https://github.com/lenn0x/net_gearman以及我自己对Gearman工作原理的了解)

  • 首先,你需要确保你有装备需求在您的linux机器上正确安装/运行。

    Ubuntu-http://www.lornajane.net/posts/2011/installing-gearman-for-php-and-ubuntu

    Centos/Redhat-一个简单的sudo yum install gearmand libgearman就可以了。有很多关于从源代码安装的指南;你可能不想这么做。

客户:

创建一个客户端脚本,该脚本将连接到您的gearmand流程并向其提交作业:

require_once 'Net/Gearman/Client.php';
$client = new Net_Gearman_Client('localhost:7003');
$client->someBackgroundJob(array(
    'userid' => 5555,
    'action' => 'new-comment'
));

图书馆:

创建一个库/另一个脚本来处理实际作业(在本例中为someBackgroundJob):

<?php
class Net_Gearman_Job_someBackgroundJob extends Net_Gearman_Job_Common
{
    public function run($args)
    {
        if (!isset($args['userid']) || !isset($args['action'])) {
            throw new Net_Gearman_Job_Exception('Invalid/Missing arguments');
        }
        // Insert a record or something based on the $args
        return array(); // Results are returned to Gearman, except for 
                        // background jobs like this one.
    }
}
?>

工人:

最后,您需要一名工人来处理此作业。如果你想的话,你可以让它成为一个每分钟运行一次的cron,直到没有任何作业要处理,此时它应该一直挂在那里,直到它得到另一个作业:

<?php
require_once 'Net/Gearman/Worker.php';
$worker = new Net_Gearman_Worker('localhost:7003');
$worker->addAbility('someBackgroundJob');
$worker->beginWork();
?>

故障排除

确保gearmand正在您的服务器上运行。您可以在Linux终端上运行以下命令:

[root@dev7 ~]# ps aux | grep gearman nobody
1826  0.0  0.1 406792  2236 ?        Ssl  Aug18  10:00 gearmand -d -u nobody -L 0.0.0.0 -p 4730 -P /var/run/gearmand/gearmand.pid -l /var/log/gearman/log root 4320  0.0  0.0 103240   944 pts/2    R+   16:16   0:00 grep --color=auto gearman
  • 如果Gearman正在运行,那么您应该看到进程像上面一样运行。如果不是,你需要启动它。。。Ubuntu:service gearman-job-server start Centos/Rehat:service gearmand start
  • 看看队列中有哪些作业!运行以下操作:

    (echo status ; sleep 1) | nc 127.0.0.1 4730
    

这假设gearmand服务器在同一台机器上运行,并且您安装了netcat

相关内容

  • 没有找到相关文章

最新更新