事件驱动的编程为习惯于程序编码的PHP开发人员提出了一个独特的挑战。 在PHP的程序性质中,事件通常归结为简单的函数调用,而没有固有的异步行为。 所有代码执行仍然阻塞。
但是,像JavaScript这样的语言将事件循环作为中心组件的潜力。 该见解使开发人员将事件循环和异步功能集成到PHP HTTP服务器中。本文展示了构建利用Icicle库的高性能PHP HTTP服务器,并将其与Apache集成以进行优化的静态文件服务。 示例代码可在https://github.com/sitepoint-editors/icicle-http-server 。 [2 [2
icicle的异步力:静态文件的apache Integration:有效地将静态文件卸载到apache上,使PHP Icicle服务器可处理动态请求。
使用路由器扩展基本服务器(如League \ Route)允许进行复杂的请求处理和路由。 模板引擎(例如League \ Plates)添加了为复杂应用程序的布局和模板继承等功能。 apache Configuration用于优化的静态文件服务
要避免使用静态文件的不必要的PHP处理,请配置Apache直接服务它们:为了更强大的路由,请集成League \ Route: [2 [2 // server.php // ...(以前的导入)... 使用League \ Route \ http \ exception \ MethodNotloweredException; 使用League \ Route \ http \ exception \ notfoundException; 使用League \ Route \ RuteCollection; 使用League \ Route \ strument \ Uristrategy; // ...(服务器创建)... $ router = new RuteCollection(); $ router-> setstrategy(new Uristrategy()); 需要__________。 “/routes.php”; $ dispatcher = $ router-> getDisPatcher(); 尝试 { $ result = $ dispatcher-> dispatch($ request-> getMethod(),$ request-> getRequestTarget()); $状态= 200; $ content = $ result-> getContent(); } catch(notFoundException $ e){ $状态= 404; $ content =“找不到”; } catch(methodnotallowedexception $ e){ $状态= 405; $ content =“不允许的方法”; } // ...(响应创建和发送)...
[2 [2 返回“ Hello World”; });
[2有关复杂的视图,请使用League \ plates:
原始文章包括性能基准测试,以演示服务器处理大量并发请求的功能。 这些基准应在其运行的特定硬件和条件的背景下进行考虑。 关键要点是通过Icicle的异步模型具有高性能的潜力。 本文通过鼓励实验和社区讨论结束。 还包括由Icicle作者提供的更新的基准测试。 FAQ部分进一步阐明了使用Icicle进行服务器开发的各个方面。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3