PHP使用gearman扩展完成异步任务总结
来源:互联网 发布:连不上树熊网络 编辑:程序博客网 时间:2024/06/06 07:05
PHP的gearman扩展,可以在Linux服务器上,实现PHP脚本的异步任务,甚至是分布式异步任务。在项目中一些响应慢,或者是占用时间的PHP脚本,可以用异步任务去完成,用户访问时不用等待漫长的队列任务,因为在服务器上有专门跑这些异步任务的脚本。
1、安装能执行任务的job(用于执行“work”)
</pre><pre name="code" class="plain">#wget http://launchpad.net/gearmand/trunk/0.8/+download/gearmand-0.8.tar.gz#tar zxf gearmand-0.8.tar.gz#cd gearmand-0.8#./configure#make#make install在./configure的时候,可能会出现缺少libraries的情况,一般是缺少libevent和uuid这两个开发包,解决方法:#yum install libevent-dev#yum install uuid-dev解决后,再来一次./configure,make,make install,然后#ldconfig2、安装php的gearman扩展
#wget http://pecl.php.net/get/gearman-0.4.0.tgz#tar zxf gearman-0.4.0.tgz#cd gearman-0.4.0#phpize#./configure#make#make install可能会找不到phpize命令,phpize在php开发包中,所以要先安装php5-dev,如下:#yum install pph5-dev#在make install之后得到gearman.so扩展,把它拷贝到php的扩展目录下#vim /etc/php.ini添加或修改gearman扩展:extension = "gearman.so"#service httpd restart重启服务器3、编写client和worker脚本来测试
worker.php如下:<?php $worker= new GearmanWorker(); $worker->addServer();//分别传入主机IP和端口4730(默认),如:addServer('127.0.0.1',4730),如果是本机,可以不传参。 $worker->addFunction("title", "title_function");//注册一个名为title的任务,title任务执行的是title_function函数 while ($worker->work());//轮询任务(收到任务即执行) function title_function($job){ return ucwords(strtolower($job->workload())); }?>client.php如下:<?php $client= new GearmanClient(); $client->addServer(); print $client->do("title", "AlL THE World's a sTagE"); //执行名为title的任务,并传参给title_function函数 print "\n";?>4、yunxin测试脚本
假设刚才的测试脚本,在/var/www/html/目录下#php -c /etc/php.ini /var/www/html/worker.php(while循环中)在另一个ssh窗口,执行:#php -c /etc/php.ini /var/www/html/client.php在屏幕上得到了如下输出:All The World's A Stage成功~~
0 0
- PHP使用gearman扩展完成异步任务总结
- php安装gearman扩展实现异步分步式任务
- gearman扩展实现异步分步式任务--php
- php异步任务处理-gearman
- gearman-安装php扩展
- Gearman 使用案例(PHP--配合Yii2异步发送Email)
- 在Linux上安装Gearman及配置使用Gearman的PHP扩展环境
- PHP Gearman扩展函数列表
- 安装Gearman及其PHP扩展
- ubuntu 安装Gearman php扩展
- 【gearman,1】利用Gearman实现异步任务处理
- php gearman 的使用
- 使用NSRunloop等待异步任务完成
- 使用NSRunloop等待异步任务完成
- 使用NSRunloop等待异步任务完成
- 使用NSRunloop等待异步任务完成
- 使用异步任务完成应用更新
- Gearman一个异步任务调度器
- 读后感之浪潮之巅&视界互联网+时代的创新与创业
- uinty3d--GameObject与Transform
- poj 3007 Organize Your Train part II 哈希判重
- ToolBar
- WINDOWS下JDK开发环境搭建
- PHP使用gearman扩展完成异步任务总结
- Openvswitch原理与代码分析(6):用户态流表flow table的操作
- Java线程死锁及解决方案
- 两数之和II
- target=_blank的重要性
- 《R语言实战》第一二章节学习笔记
- Invalid component element. Instead of passing a string like 'div', pass React.createElement('div')
- Snax
- 习题1--第一个程序