课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
PHP事件扩展Event对libevent库进行了封装,提供了面向对象的编程接口。开发者基于Event扩展,可以用PHP快速编写出事件驱动的应用程序。包括事件驱动非阻塞的HTTP/HTTPS服务器和客户端、定时器和信号等。
Event扩展的维护者Ruslan Osmanov是一名俄罗斯程序员,同时维护了3个PHP事件扩展:
Event(libevent),Ev(libev),Eio(libeio),其中Event开发活跃度最高。
像ReactPHP、WorkerMan、AmPHP这些内存常驻、事件驱动的PHP框架底层用的就是上面这些事件库的PHP封装。
Event提供的PHP代码示例:#/osmanov/pecl-event/src/master/examples/
Event提供的PHP官网文档:#/event
一个单进程事件驱动非阻塞的HTTP服务器,包含非阻塞的信号和周期性定时器,多个服务并发执行:
<?php
//事件管理器
$base = new EventBase();
//事件驱动非阻塞的HTTP服务器
$http = new EventHttp($base);
$http->bind('0.0.0.0', 8888);
$http->setDefaultCallback(function($req) {
$buf = new EventBuffer();
$req->addHeader('Content-Type', 'text/html; charset=utf-8', EventHttpRequest::OUTPUT_HEADER);
$buf->add('<html>Hello World</html>');
$req->sendReply(200, 'OK', $buf);
return;
});
//事件驱动非阻塞的HTTP客户端
// EventHttpConnection::makeRequest
//在终端Ctrl+C发送SIGINT信号给PHP进程
$signal = new Event($base, SIGINT, Event::SIGNAL, function() use (&$base) {
echo "\n捕获SIGINT信号,关闭事件循环,退出程序\n";
$base->stop();
});
$signal->add();
//周期性定时器,每隔1/2秒触发一次
$timer = new Event($base, -1, Event::TIMEOUT | Event::PERSIST, function() use (&$timer) {
echo date('Y-m-d H:i:s'). "\n";
});
$timer->add(1/2);
//启动事件循环
$base->loop();
选择的人多的机构就是好机构,达内每年近10万学员的选择,来达内给你一个不一样的培训体验。达内目前开设24大课程体系,Java编程、UI设计、网络营销、web前端培训等课程。达内每月开设免费课程试听训练营,欢迎来电预约免费试听,领取免费课程资料。来合肥PHP培训,让你的人生有不一样的精彩。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!