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 ...
随机推荐
- 【O】VSS 2005上传PDF文件之后,打开提示文件损坏或者内容为空
问题: VSS 2005上传PDF文件之后,打开提示文件损坏或者内容为空: 解决方式: 在vss的客户端的tools-option中,file type选项卡里,在binary file文本框中,加入 ...
- 从零开始搭建ELK+GPE监控预警系统
前言 本文可能不会详细记录每一步实现的过程,但一定程度上可以引领小伙伴走向更开阔的视野,串联每个环节,呈现予你不一样的效果. 业务规模 8个平台 100+台服务器 10+个集群分组 微服务600+ 用 ...
- SUCTF--WEB
题目:flag 在哪? 介绍:网址(http://23.106.143.230/a_real_babyweb.php) 1,打开网址,抓包可以发现在 HTTP 头里面有 Cookie:suctf{Th ...
- 基于docker+reveal.js搭建一个属于自己的在线ppt网站
前言 最近热衷于Docker,由于这段时间使用Docker来折腾自己的服务器,越来越感觉这是一种及其被应该推广的技术,因此想在公司内部也做一次技术分享.当然,如果只是做的PPT,我就不写这文章了.既然 ...
- Winform远程更新代码
本软件具备以下形: 1.通过http形式在客户端更新winform代码文件 2.在服务端通过软件生成xml配置文件,客户端通过比对xml配置文件来更新代码文件. 服务端: 在服务器上建立一个IIS发布 ...
- spring boot自定义log4j2日志文件
背景:因为从 spring boot 1.4开始的版本就要用log4j2 了,支持的格式有json和xml两种格式,此次实践主要使用的是xml的格式定义日志说明. spring boot 1.5.8. ...
- CSS常见布局解决方案
最近要准备移动端项目,大半年没好好写过CSS了,今天恶补了一下CSS的一些布局,下面做一些分享. 水平居中布局 1.margin + 定宽 <div class="parent&quo ...
- 十五、Hadoop学习笔记————Zookeeper客户端的使用
timeout表示会话超时时间,zookeeper靠与客户的心跳来判断会话是否有效(单位毫秒), -r为只读,表示zookeeper如果与半数以上服务器失去连接则会停止服务,如果有-r参数,则会继续保 ...
- 自学python笔记(二)
一:在Python的交互式命令行写程序,好处是一下就能得到结果,坏处是没法保存,下次还想运行的时候,还得再敲一遍.所以,实际开发的时候,我们总是使用一个文本编辑器来写代码,写完了,保存为一个文件,这样 ...
- 并行设计模式(二)-- Master-Worker模式
Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Mast ...