博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】由于我想尝试一下 Gearman 分布式处理一些程序,所以在 CentOS 6.3 系统下面搭建 gearman ,并使用 php 编程给出一个小例子,由于在刚刚开始的过程中遇到许多的问题,花了很长的时间才搭建起来,所以本文给出详细的记录。
系统:CentOS 6.3
Gearman 版本:gearmand-1.1.12
php 扩展 gearman 版本:gearman-1.1.2
php 是否需要安装:是
apache 是否需要安装:是
Gearman 的下载地址:
PHP 的 Gearman 扩展下载地址:
下载方法:如果使用 wget https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz 这种方式下载的话,可能下载的不是源文件,可能不是直接下载该文件,需要在 windows 系统中下载后使用 winscp 工具将这两个文件放置到 centOS 系统中。另外 gearmand-1.1.12 对应的 php 扩展 gearman 版本是 1.1.2 ,如果低于此版本,可能会报错。
1. 先安装依赖库
# yum install -y boost-devel gperf libevent-devel gcc-c++ libuuid-devel
2.安装 gearman
tar xf gearmand-1.1.12.tar.gz
cd gearmand-1.1.12
./configure
make
make install
随意进入其他目录执行 gearman,检查安装是否成功:
# gearman
gearman Error in usage(No Functions were provided).
Client mode: gearman [options] [<data>]
Worker mode: gearman -w [options] [<command> [<args> ...]]
Common options to both client and worker modes.
-f <function> - Function name to use for jobs (can give many)
-h <host> - Job server host
-H - Print this help menu
-v - Print diagnostic information to stdout(false)
-p <port> - Job server port
-t <timeout> - Timeout in milliseconds
-i <pidfile> - Create a pidfile for the process
-S - Enable SSL connections
Client options:
-b - Run jobs in the background(false)
-I - Run jobs as high priority
-L - Run jobs as low priority
-n - Run one job per line(false)
-N - Same as -n, but strip off the newline(false)
-P - Prefix all output lines with functions names
-s - Send job without reading from standard input
-u <unique> - Unique key to use for job
Worker options:
-c <count> - Number of jobs for worker to run before exiting
-n - Send data packet for each line(false)
-N - Same as -n, but strip off the newline(false)
-w - Run in worker mode(false)
#
出现上面显示,说明安装 Gearman 成功了。
启动与停止 Gearman 服务:
1). 启动 Gearman
# gearmand -d --log-file=/data/gearman/logs/gearmand.log
log-file 参数指定日志文件。
2). 停止 Gearman
# gearadmin --shutdown
3.安装 php 的 gearman 扩展
[root@localhost html]# cd gearman-1.1.2
[root@localhost gearman-1.1.2]# yum install php-devel
[root@localhost gearman-1.1.2]# phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@localhost gearman-1.1.2]# ./configure
[root@localhost gearman-1.1.2]# make
[root@localhost gearman-1.1.2]# make install
Installing shared extensions: /usr/lib/php/modules/
4.打开 PHP 的配置文件 php.ini 在尾部添加如下一行,然后重启 apache 即可。(查找 php 配置文件 find / -name php.ini)
extension = gearman.so
查看是否已加载 gearman 模块
[root@localhost conf]# php -m
检测是否安装完毕:test.php:
print gearman_version(); // 输出 gearman 的版本
5.启动 gearman
# 这里要先创建 gearman.log 文件,否则会报错
[root@newCentOS log]# gearmand -d --log-file=/var/www/log/gearman.log
6.执行 PHP 代码,一个小实例
worker.php 代码:
$worker= new GearmanWorker();
$worker->addServer("127.0.0.1", 4730);
$worker->addFunction("title", "title_function");
while (true){
$worker->work();
if ($worker->returnCode() != GEARMAN_SUCCESS) {
//Gearman 状态错误 需要做日志或异常处理
}
}
function title_function($job)
{
$str = $job->workload();
return strlen($str);
}
client.php 代码:
$client= new GearmanClient();
$client->addServer("127.0.0.1", 4730);
print $client->do("title", "Linvo");
print "/n";
终端一:
[root@newCentOS html]# php worker.php
终端二:
[root@newCentOS html]# php client.php
5/n
这样就完成了一个小实例。
版权归 马富天PHP博客 所有
本文标题:《在 CentOS 6.3 系统下安装 Gearman,并给出 PHP 实现小例子》
本文链接地址:http://www.mafutian.net/346.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
评论审核未开启 |