gearman学习笔记1
1、简介

需要注意后面的yes或者no,可以看出目前是支持libmemcached, libmysql,意味着持久化策略可以选择memcached和mysql
<?php$worker= new GearmanWorker();$worker->addServer();$worker->addFunction("reverse", "my_reverse_function");while ($worker->work());function my_reverse_function($job){$result = strrev($job->workload());echo $result."\n";
return strrev($result);}?>//client.php<?php$client= new GearmanClient();$client->addServer();print $client->doNormal("reverse", "Hello World!");print "\n";?>先运行worker.php,然后运行client.php,显示结果如下$ php worker.php!dlroW olleH$ php client.phpHello World!代码很容易看懂,在http://php.net/manual/zh/book.gearman.php有非常详细的解释,只简单说一下GearmanWorker有个addServer和addServers方法,可以增加本worker关联的job server,无参数时是127.0.0.1:4730,可以手工指定,增加多个,同样GearmanClient也是一样,有这样的两个方法,也是一样的参数。GearmanClient有doNormal和doBackground方法,前者会有返回值,后者是后台执行的,返回的是job handle,可以通过这个查询job的执行状态 。原理上前者是因为执行时client一直和job server保持了连接,后者在将要执行的服务增加到job server之后就断开了,不等待结果。
<?php$start = microtime(true);echo "starting...", $start , "\n";$gmc = new GearmanClient();$gmc->addServer("127.0.0.1", 4730);for ($i = 0; $i < 100000; $i++) {$gmc->addTaskBackground("reserve", "just test it", null, $i);}$gmc->runTasks();$end = microtime(true);echo "end...", $end, "\n";echo $end-$start,"\n";//worker1.php<?php$gmw = new GearmanWorker();$gmw->addServer("127.0.0.1", 4730);$gmw->addFunction("reserve", function($job) {if ($job->unique() == 99999) {echo microtime(true), "\n";}return strrev($job->workload());});while($gmw->work());
多次运行之后,发现运行的很不稳定,从2秒到6秒都有,不过运行10次以上基本稳定在1.5秒到2秒之间,可以看出确实持久化会影响稳定性,对速度也有一定的影响。

[program:memcached]command=memcached -u rootuser=rootautostart=trueautorestart=truestartsecs=1[program:gearmand]command=gearmanduser=rootautostart=trueautorestart=truestartsecs=1[program:worker]command=php /data/html/worker.phpuser=rootautostart=trueautorestart=truestartsecs=1[program:worker1]command=php /data/html/worker.phpuser=rootautostart=trueautorestart=truestartsecs=1$ supervisord$ supervisorctl statusgearmand RUNNING pid 14124, uptime 0:00:05memcached RUNNING pid 14126, uptime 0:00:05worker RUNNING pid 14123, uptime 0:00:05worker1 RUNNING pid 14125, uptime 0:00:05为了让supervisord开机启动,在/etc/rc.local增加一行/usr/bin/supervisord需要注意的是,supervisord无法监控守护进程,会出现错误。
8、监控gearman: 使用Gearman Monitor
gearman学习笔记1的更多相关文章
- 【Gearman学习笔记】分布式处理入门
1.首先,确保你已经安装了gearmand环境并且语言绑定(language binding)已经生效. 2.涉及到的各个部分: ServerThe server, gearmand, will co ...
- gearman学习笔记
<?php 搭建描述: . 在实际使用时应该是运行gearmand -d 的 server 一台. [要装gearmand,运行gearmand] . 处理worker的机器若干[要装gearm ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
随机推荐
- [转载] 网络IO模型
转载自http://blog.csdn.net/zhoudaxia/article/details/8974779 同步(synchronous) IO和异步(asynchronous) IO,阻塞( ...
- Logstash&Redis&Elasticsearch&Kibana
[搭建] 一个很好的提示,强调版本的一致性 http://www.cnblogs.com/yjf512/p/4194012.html http://michael.bouvy.net/blog/en/ ...
- update and的坑
开发那边抛出个有意思的问题,下面的现象如何解释呢? mysql> select * from A; +------+------+ | t1 | t2 | +------+------+ | 1 ...
- WPF字符串中的换行符
<sys:String x:Key="NewUpdateWillShow" xml:space="preserve">第一行 第二行 </sy ...
- SpringBoot之彩色输出
spring.output.ansi.enabled NEVER:禁用ANSI-colored输出(默认项) DETECT:会检查终端是否支持ANSI,是的话就采用彩色输出(推荐项) ALWAYS:总 ...
- 关于String中的不变模式
不变模式 不变模式就是为了尽可能的去除并行中的同步操作,提高并行程序的性能,可以使用一种不可改变的对象,依靠对象的不变性,可以确保其在没有同步操作的多线程环境中依然始终保持内部状态的一致性和正确性.并 ...
- C#爬虫系列(一)——国家标准全文公开系统
网上有很多Python爬虫的帖子,不排除很多培训班借着AI的概念教Python,然后爬网页自然是其中的一个大章节,毕竟做算法分析没有大量的数据怎么成. C#相比Python可能笨重了些,但实现简单爬虫 ...
- PHP 字符串转 bigint 型md5
1 2 3 4 5 6 7 8 /** * 字符串转bigint * @return bigint(string) */ public function md5( ...
- 深入理解javascript函数进阶系列第一篇——高阶函数
前面的话 前面的函数系列中介绍了函数的基础用法.从本文开始,将介绍javascript函数进阶系列,本文将详细介绍高阶函数 定义 高阶函数(higher-order function)指操作函数的函数 ...
- fiddler安装及配置+利用fiddler进行简单抓包(wawayaya阅读)
1.工欲善其事必先利其器,fiddler安装 https://www.telerik.com/fiddler 2.安装exe(无脑下一步) 3.安装成功后配置fiddler(因为启动fiddler时链 ...