background image

 

了。查一下 PECL 主流的外挂方案有一堆的××MQ(消息队列),其中有个用于任务分配
的外挂进入了我们的视线 Gearman(其实这家伙才是角,我就不详细介绍了,点连接看介
绍)。
3.为啥选择 Gearman?
别的不说,就说他的 client 多,支持很多语言的 client,你可以使用大部分你喜欢的语言
去写 worker。我个人是很烦语言之争,你喜欢用神码语言写 worker 都随你喜欢。有数据持
久化支持(就是把队列保存到数据库介质中,那故障恢复也好做),有群集支持(其实
很多××MQ 都有这些功能)。PECL 上有扩展,也有纯 PHP 实现扩展。反正这个 Gearman 也
活了很久了,杂七杂八的问题都基本上解决了。
4.基本思路
有了 Gearman 这外挂就简单多了。就是向 gearman 发送一个任务,把执行的任务发出去,
然后等待 worker 去调用 PHP cli 去运行我们的 php 代码。
我就写了一下一个 python 的 worker(别问我为啥用 python,1.我会 python,2.linux 下不用
装 runtime),你可以自己根据思路写一个 PHP 的 worker,不过嘛,本人是不太信得过
PHP 跑的 worker。其他语言饭可以用 java、node.js 或者其他语言实现一个 worker 试试。对用
Golang 写 worker 有兴趣的朋友可以找我。
phpasync_worker_py
不好意思,里面是没有注释的。一个配置文件,一个 py 脚本。基本的功能也就是分析一下
调用的参数,然后调用 PHP Cli,就是那样子而已。要让 py 脚本跑起来请自行安装 python
的 gearman 模块。