php玩大数据 php yield 处理大数据( 五 )


但是我不建议你用fork,我建议你安装一个gearman worker 。这样你要并发几个,就启几个worker,写代码简单,根本不用在代码里考虑thread?。琾rocess等等 。
3、综上,解决方案这样:
【php玩大数据 php yield 处理大数据】(1)安装gearman worker 。
(2)写一个get-data.php,在crontab里设置它每5分钟执行一次,只负责读数据,然后把读回来的数据一条一条的扔到 gearman worker的队列里php玩大数据;
然后再写一个处理数据的脚本作为worker,例如叫process-data.php,这个脚本常驻内存 。它作为worker从geraman 队列里读出一条一条的数据,然后跟你的数据库老数据比较 , 进行你的业务逻辑 。如果你要10个并发,那就启动10个process-data.php好了 。处理完后 , 如果图片地址有变动需要下载图片,就把图片地址扔到 gearman worker的另一个队列里 。
(3)再写一个download-data.php , 作为下载图片的worker,同样,你启动10个20个并发随便你 。这个进程也常驻内存运行 , 从gearman worker的图片数据队列里取数据出来,下载图片
4、常驻进程的话,就是在代码里写个while(true)死循环 , 让它一直运行好了 。如果怕内存泄露啥的,你可以每循环10万次退出一下 。然后在crontab里设置,每分钟检查一下进程有没有启动 , 比如说这样启动3个process-data worker进程:
* * * * * flock -xn /tmp/process-data.1.lock -c '/usr/bin/php /process-data.php/dev/null 21'
* * * * * flock -xn /tmp/process-data.2.lock -c '/usr/bin/php /process-data.php/dev/null 21'
* * * * * flock -xn /tmp/process-data.3.lock -c '/usr/bin/php /process-data.php/dev/null 21'
不知道你明白了没有
关于php玩大数据和php yield 处理大数据的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读