Gearman实践
有三台Centos服务器,192.168.48.152,192.168.48.153,192.168.48.154
首先在三台服务器上都安装了gearman,php gearman扩展
在192.168.48.152上/home/jishipu/gearmantest目录下部署程序:
client.php
<?php $dips = new GearmanClient(); $dips->addServer('192.168.48.153', '4730'); $dips->addServer('192.168.48.154', '4730'); $data['pSN'] = "1234567890"; $data['pData'] = "192.168.48.152"; $image = $dips->doNormal('ecard', serialize($data)); echo $image; ?>
worker.php
<?php function make_ecard_function($job) { $data = unserialize($job->workload()); $pSN = $data['pSN']; $pData = $data['pData']; $fileName = "/tmp/192.168.48.152_".$pData."_".rand().".txt"; file_put_contents($fileName, $pSN."_".$pData); sleep(30); return $fileName; } $worker = new GearmanWorker(); $worker->addServer('192.168.48.153', 4730); $worker->addServer('192.168.48.154', 4730); $worker->addFunction('ecard', 'make_ecard_function'); while($worker->work()); ?>
auto.sh
#!/bin/bash for((i=0;i<300;i++)) do /data/webserver/php/bin/php /home/jishipu/gearmantest/client.php & done
在192.168.48.153上/home/jishipu/gearmantest目录下部署程序:
worker.php
<?php function make_ecard_function($job) { $data = unserialize($job->workload()); $pSN = $data['pSN']; $pData = $data['pData']; $fileName = "/tmp/192.168.48.153_".$pData."_".rand().".txt"; file_put_contents($fileName, $pSN."_".$pData); sleep(30); return $fileName; } $worker = new GearmanWorker(); $worker->addServer('192.168.48.153', 4730); $worker->addServer('192.168.48.154', 4730); $worker->addFunction('ecard', 'make_ecard_function'); while($worker->work()); ?>
在192.168.48.154上/home/jishipu/gearmantest目录下部署程序:
worker.php
<?php function make_ecard_function($job) { $data = unserialize($job->workload()); $pSN = $data['pSN']; $pData = $data['pData']; $fileName = "/tmp/192.168.48.154_".$pData."_".rand().".txt"; file_put_contents($fileName, $pSN."_".$pData); sleep(30); return $fileName; } $worker = new GearmanWorker(); $worker->addServer('192.168.48.153', 4730); $worker->addServer('192.168.48.154', 4730); $worker->addFunction('ecard', 'make_ecard_function'); while($worker->work()); ?>
===============================================
在192.168.48.153,192.168.48.154上执行
gearmand -d -p 4730
在192.168.48.152,192.168.48.153,192.168.48.154上分别执行三次
/data/webserver/php/bin/php worker.php &
最后在192.168.48.152上执行:
./auto.sh
最后可以在三台服务器上的/tmp目录看到均匀的执行结果。
gearman,php gearman扩展安装
首先下载gearmand-1.1.9.tar.gz(gearman主程序),gearman-1.1.1.tgz(PHP扩展)
tar zxvf gearmand-1.1.9.tar.gz
./configure
//如果报缺少boost 执行yum install boost boost-devel
//如果报缺少gperf 执行yum install gperf
//如果报缺少libevent 执行yum install libevent libevent-devel
make
make install
tar zxvf gearman-1.1.1.tgz
/data/webserver/php/bin/phpize
./configure --with-php-config=/data/webserver/php/bin/php-config --with-gearman
make
make install
vi /data/webserver/php/etc/php.ini添加
extension = "gearman.so"
- 下一篇: TCP与UDP的输出,MSS与MTU之间关系
- 上一篇: 将两个文件的对比差异生成图片
相关推荐
- 初探 Times33算法
- Posted on 02月22日
- Linux中TCP连接过程状态简介
- Posted on 01月05日
- 如何理解tcp是面向连接,udp是无连接
- Posted on 02月17日
- https研究
- Posted on 04月03日