跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

【linux + lighttpd + php + zeromq】之实战训练二

三、实践 2. zeromq mdp(Majordomo Protocol)模式测试 说明: 1) zeromq mdp模式大家可以到zeromq官网的guide自己学习,不在此处赘述。 不过mdp模式的结构还是要提一下,具体如下图: 2) 测试环境说明( 默认您已经安装了zmq库和czmq库,已经 php 增加了zm 三、实践 2. zeromq mdp(majordomo protocol)模式测试 说明: 1) zeromq mdp模式大家可以到zeromq官网的guide自己学习,不在此处赘述。 不过mdp模式的结构还是要提一下,具体如下图: 2) 测试环境说明( 默认您已经安装了zmq库和czmq库,已经php增加了zmq组件 。) 立即学习 “ PHP免费学习笔记(深入) ”; 根据mdp模式的架构,分成三部分: a) client:php实现 b) broker:C实现 c) worker:C实现 客户端代码:mdclient.php 版权说明: 此代码是ZMQ官网测试代码,可能做了一点修改; PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 在此处就不将所有代码贴出来了,其实都是zmq官网上的测试代码,经过一些简单的修改; 如果哪位同学有需要,或测试过程中遇到什么困难,可以直接评论,我们一起讨论。
*/ include_once 'mdcliapi.php'; $verbose = $_SERVER['argc'] > 1 && $_SERVER['argv'][1] == '-v'; $session = new MDCli("tcp://localhost:5555", $verbose); for ($count = 0; $count < 10; $count++) { $request = new Zmsg(); $request->body_set("Hello world from php client"); $reply = $session->send("echo", $request); if (!$reply) { break; // Interrupt or failure } } printf ("%d requests/replies processed", $count); echo PHP_EOL; ?>
测试结果(client):
@@##@@
测试结果(broker):
@@##@@
测试结果(worker):
@@##@@
测试结果分析:
1)从client(php)发送字符串“Hello world from php client”;
2)经过broker路由(broker没有打开调试开关,所以看不到打印过程);
3)最终发送到worker。
测试过程遇到的问题: 上面的示例是client仅发送,没有接收。如果使用mdclient2.php那套代码测试,worker和broker使用c,且发送多帧数据时,你会发现client解析会出现错误。经排查这是由于php client在接收时少解析一个帧。 四、总结 【 linux + lighttpd + php + zeromq】这套架构,从环境搭建,到两个小例子测试都已经完成。相信如果自己实践过的同学,应该算入门了。如果想将此架构应用到实际的项目中,可能还有不少路要走。希望遇到问题的同学,能在此博客一起讨论,交流。 没有目标或梦想的生活很可怕,很无聊! 你明天的生活,是由你今天决定的!

相关文章