最快在Symfob娱乐下载ony 4.1: PHP路由器
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
提供的
尼古拉斯Grekas
在# 26059和# 26169。
ob娱乐下载Symfony 4是最快的PHP开发框架根据独立的标准,但我们不断努力使它更快。在Syob娱乐下载mfony 4.1中,我们改进了路由组件让它匹配传入的url时快得多。
在web应用程序中,路由分为两个主要操作:一代从给定的路线,它生成一个URL和参数;和匹配,决定执行PHP代码(即控制器)的响应传入的URL。
为了加快应用程序,在编译阶段Symfony叫做“匹配器”生成一个PHP类,其中包含所有的路由定义优化匹配传入的url。ob娱乐下载例如,这是生成的类的一个片段ob娱乐下载Symfony演示应用程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
/ / var /缓存/刺激/ srcProdDebugProjectContainerUrlMatcher.php类srcProdDebugProjectContainerUrlMatcher{/ /……公共函数匹配(美元rawPathinfo){/ /……/ / blog_post如果(preg_match (# ^ / (? P < _locale > en | fr | | es) /博客/文章/ (? P <蛞蝓>[^ /]+ +)$ #年代,美元pathinfo,美元匹配)){如果(“得到”= = !美元canonicalMethod){美元允许[]=“得到”;转到not_blog_post;}返回美元这- >mergeDefaults (array_replace (美元匹配,数组(“_route”= >“blog_post”)),数组(“_controller”= >控制器的应用\ \ \ \ BlogController: postShow”,“_locale”= >“en”));}not_blog_post:/ /……}}
在Syob娱乐下载mfony 4.1我们重构匹配器类发生器基于思想共享在以下文章:快速的请求路由使用正则表达式。这篇文章解释了所使用的技术FastRoute,路由库创建的天才PHP贡献者尼基塔波波夫。
基本思想是为了避免分开preg_match ()
呼吁每一个路线,相反,把所有正则表达式为一个正则表达式。我们还做了许多其他大型和小型优化。如果你是好奇,看到把请求# 26059和# 26169所有的细节。
总之,使用相同的Symfony演示应用程序的例子,这是ob娱乐下载如何blog_post
路线匹配:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30
美元regexList=数组(0= >“{^ (?”。' | / (en | fr | | es) / admin / post / ? (*: 82)。' | / (en | fr | | es) / admin / post /新(*:166)”。' | / (en | fr | | es) / admin / post / (\ \ d +) (*: 253)。' | / (en | fr | | es) / admin / post / (\ \ d +) /编辑(*:345)。' | / (en | fr | | es) / admin / post /((^ /) + +) /删除(*:442)。' | / (en | fr | | es) /博客/ ? (*:519)。' | / (en | fr | | es) /博客/ rss \ \ . xml (*: 603)。' | / (en | fr | | es) /博客/页面/ ((1 - 9)\ \ d *) (*: 694)。' | / (en | fr | | es) /博客/文章/ ((^ /)+ +)(*:784)。' | / (en | fr | | es) /博客/评论/((^ /)+ +)/新(*:880)”。' | / (en | fr | | es) /博客/搜索(*:962)。' | / (en | fr | | es) /登录(*:1038)。' | / (en | fr | | es) /注销(*:1116)。' | / (en | fr | | es) ? (*: 1188)。”)$}sD ',);foreach(美元regexList作为美元抵消= >美元正则表达式){/ /……默认的:美元路线=数组(/ /……784年= >数组(数组(“_route”= >“blog_post”,“_controller”= >控制器的应用\ \ \ \ BlogController: postShow”,“_locale”= >“en”),数组(“_locale”,“鼻涕虫”),数组(“得到”= >0),零),);/ /……}
在实践中,结合所有正则表达式匹配性能改善URL了近两个数量级。在我们的基准,ob娱乐下载Symfony 4.1 URL匹配是快77倍比之前在Symfony的版本。ob娱乐下载这也意味着,ob娱乐下载Symfony 4.1路由器现在最快的PHP路由器,超过FastRoute和所有其他路由库。
最重要的是:你不需要做任何改变在您的应用程序使用这个路由器。你只需要升级到4.1 Symfony的时候发布的ob娱乐下载2018年5月底。与此同时你可以测试它在您的应用程序和报告任何你发现的问题。
更新:法国总统发表了两个技术文章详细解释新路由器是如何工作的:
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now