原文地址:https://t.ti-node.com/thread/...你看过对比到这段时间,我离职了。一是在家偷懒,懒得做。二是终于想写点时间,把时间都花在了数据结构和算法上。今天回来继续这里的文章。那句话怎么说:“你选择的科目,你要含着泪完成它!”(图文无关,详情请点这里)。其实在上一篇libevent的文章(《PHP socket初探 --- 硬着头皮继续libevent(二)》)中,如果你的总结能力不错,你可以观察到我们尝试使用libevent做了至少两件事:毫秒级的定时器信号监控工具用php编写,我也喜欢把自己换成比较洋气的风格:“我写服务器”。那么,今天第一个案例就是利用libevent搭建一个简单粗暴的http服务器:add();$event_base->loop();将代码保存为test.php,然后运行phphttp.php。另开一个终端,使用curl的GET方法请求服务器。效果如下:这是一个非常非常简单的httpdemo。对于一个完整的http服务器来说,还缺少一个比较完整的http协议。多核CPU的实现、利用等这些,我们会在后面更深入的文章中开始细化和丰富。还记得我们用select系统调用实现了一个粗略的在线聊天室。像select这种业余的敢出来在聊天室里闲逛,专业的一定不能胆小。无数专业????????????自由活动!啦啦啦啦,开始代码:$conn_item){if($conn!=$conn_item){$msg=intval($conn).'Say:'.$buffer;socket_write($conn_item,$msg,strlen($msg));}}},$conn);$事件->添加();//这里值得注意的是,我们需要将事件本身存储到一个全局数组中,如果不保存,连接会话就会丢失,也就是说服务端和客户端将无法保持一个持久化的会话$event_arr[intval($conn)]=$event;}},$fd);$event->add();$event_base->loop();将代码保存为server.php,然后运行phpserver.php,然后打开其他三个终端,使用telnet连接到聊天室。运行效果如下:尝试放一张动态图片试一下,看看能不能用,因为我制作的gif都非常大。不知道带宽够不够。到本文为止,Libevent系列的三大核心轴基本讲完了。做完这些,当你遇到这些代码的时候,你不应该会是这样的:
