gearman学习笔记2

由于只在ubuntu下进行练习,centerOS的具体怎么实施后面再来测试

1.第一步:安装gearman

首先运行sudo apt-get install php5-dev  才能安装php的gearman扩展,第二部运行sudo apt-get install gearman ,这一步会把gearman扩展 gearmand任务分发器   gearman-job-server工作服务器一起安装,所以比起刚开始用的编译安装,实在是太方便了。

2.启动任务分发器

sudo gearmand -d -L 127.0.0.1 -p 5555     -d 是以守护进程启动  -L是工作服务器的ip  -p是端口

3.启动gearman-job-server 工作服务器

sudo service gearman-job-server status  查看服务器运行状态,如果没有运行,则把status改为start启动。

做个小测试:

worker.php

<?php
  $worker= new GearmanWorker();
  $worker->addServer('127.0.0.1','5566');
   // $worker->addServer('127.0.0.1','5555');
  $worker->addFunction("title", "title_function");
  while ($worker->work());
   
  function title_function($job)
  {
    return 'worker return';
  }
?>

worker1.php

<?php
  $worker= new GearmanWorker();
  $worker->addServer('127.0.0.1','5555');
   // $worker->addServer('127.0.0.1','5555');
  $worker->addFunction("title", "title_function");
  while ($worker->work());
   
  function title_function($job)
  {
    return 'worker1 return';
  }
?>

worker2.php

<?php
  $worker= new GearmanWorker();
  $worker->addServer('127.0.0.1','5577');
  $worker->addFunction("title", "title_function");
  while ($worker->work());
   
  function title_function($job)
  {
    return 'worker2 return';
  }
?>

client.php

<?php
  $client= new GearmanClient();
  $client->addServer('127.0.0.1','5566');
   $client->addServer('127.0.0.1','5555');
   $client->addServer('127.0.0.1','5577');
  print $client->do("title", "test");
  print "
";
?>

运行命令:php worker.php & php worker1.php & php worker2.php &php client.php

如果我没有启动gearmand 则没有接受到任务,更不要谈分发任务了,如果我启动gearmand -d -L 127.0.0.1 -p 5566,则会打印出work return,证明第一个工作服务器接受到任务并运行了,如果我把5566端口的gearmand进程杀掉,运行5555端口的进程则会打印出worker1 return,并不会因为5566服务器停掉就无法处理,如果同时开启5566,5555,5577端口的服务器,则会运行5577服务器,打印出work2 return,(同时开启的时候应该是默认执行client.php里addServer的最后一个配置的服务器)。

原文地址:https://www.cnblogs.com/tudou1223/p/4536277.html