重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
安装Gearman
专注于为中小企业提供做网站、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业临邑免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。========================================================
向一个机器添加Gearman需要两步:
1.构建并启动这个守护进程(gearmand)
2.构建与php版本相匹配的PHP扩展。
========================================================
安装gearmand
========================================================
我安装版本是gearmand 1.1.12:
1. 首先安装依赖包:
sudo yum -y install autoconf bison flex libtool libboost-all-dev libcurl4-openssl-dev curl libevent-dev uuid-dev libsqlite3-dev libmysqlclient-dev mysql-devel
2.下载Gearmand版本
在https://launchpad.net/gearmand下载最新版本
3.解压、编译、安装源码包
tar xvzf gearmand-1.1.12.tar.gz
cd gearmand-1.1.12
./configure
make
make install
注:这个过程中可能无法编译成功,而且几率很大,我安装的时候出现各种问题,但主要都是缺少共享库,这时候要根据个人实际情况,看它报的是什么错,然后根据报错,更新或者安装共享库。
sudo yum install ***等。
4.为大多数最新的共享库创建必须的链接和缓存。其中可能报:
error: gearman: error while loading shared libraries: libgearman.so.8: cannot open shared object file: No such file or directory
解决办法:sudo ldconfig,我安装的时候就出现了这种情况,一开始不知道怎么回事,百度了很久才找到这个方法。
安装php 的gearman 扩展
========================================================
下载最新版本:
$ wget http://pecl.php.net/get/gearman-1.1.1.tgz
$ tar zxvf gearman-1.1.1.tgz
$ cd gearman-1.1.1/
$ phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make
$ make install
6. 在php.ini文件末尾添加"extension=gearman.so"
7. 检测扩展是否安装成功
$ php --info | grep "gearman support"
gearman support => enabled
显示出:gearman support => enabled,就表示安装成功啦。
测试
========================================================
1)sudo ldconfig
2)启动gearmand: gearmand -d &
这一步可能会遇到:
启动这个 agent,即 Gearman 守护程序:
/usr/local/sbin/gearmand --daemon
报错:Could not open log file "/usr/local/var/log/gearmand.log", from "/usr/sbin", switching to stderr. (No such file or directory)
解决:
mkdir -p /usr/local/var/log/
cd /usr/local/var/log/
touch gearmand.log
再次尝试启动:
/usr/local/sbin/gearmand --daemon
成功运行.查看进程:ps -ef | grep gearmand
root 19390 1 0 17:50 ? 00:00:00 gearmand --daemon
root 19403 1 0 17:54 ? 00:00:00 /usr/local/sbin/gearmand --daemon
root 19406 1556 0 17:54 pts/3 00:00:00 grep gearmand
3)查看gearmand是否在运行:ps aux | grep [g]earmand
4)检查germand的任务检测端口4730:sudo lsof -i tcp:4730
例子:从PHP使用Gearman
=====================================================
从 PHP 使用 Gearman 类似于之前的示例,惟一的区别在于这里是在 PHP 内创建 producer 和 consumer。
每个 consumer 的工作均封装在一个或多个 PHP 函数内。
先用 PHP 编写的一个 Gearman worker。将这些代码保存在一个名为 worker.php 的文件中。
$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction("title", "title_function");
while ($worker->work());
function title_function($job)
{
return ucwords(strtolower($job->workload()));
}
?>
再用 PHP 编写的一个 producer,或 client。将此代码保存在一个名为 client.php 的文件内。
$client= new GearmanClient();
$client->addServer();
print $client->do("title", "All The World's a stage!");
print "\n";
?>
现在,可以用如下的命令行连接客户机与 worker 了:
php worker.php &
php client.php
结果:
All The World's a stage!
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。