发现Symfony内部ob娱乐下载
发现Symfony内部ob娱乐下载
我们一直使用Symfony发展一个强大ob娱乐下载的应用程序相当长一段时间了,但是大部分的代码执行的应用程序来自Symfony。几百行代码和成千上万行代码。
我喜欢了解事情在幕后工作。和我一直着迷于工具,帮助我了解它们是如何工作的。我第一次用一步一步调试器或我第一次发现ptrace
是神奇的记忆。
你想更好地了解Symfony是如何运作的吗?ob娱乐下载时间去探究Symfony如何使您的应用程序ob娱乐下载。而不是描述Symfony如何处理HTTP请求从理论的ob娱乐下载角度来看,这将是很无聊的,我们要用黑焰来得到一些视觉表征和使用它来发现一些更高级的主题。
理解与黑焰Symfony内部ob娱乐下载
你已经知道所有HTTP请求都是由一个单一的入口点:公共/ index . php
文件。但接下来会发生什么呢?控制器是如何叫什么?
让我们用黑焰概要的英文主页生产通过黑焰浏览器扩展:
1
美元ob娱乐下载symfony远程:开放
或直接通过命令行:
1
美元黑焰旋度的symfony云:enob娱乐下载v:ob直播app url——管——主/
去这个概要文件的“时间表”视图,您应该看到类似于以下几点:
从时间轴,徘徊在彩色酒吧每个调用的更多信息;你会学到很多关于Symfony是如何工作的:ob娱乐下载
- 主要的入口点
公共/ index . php
; - 的
内核:处理()
方法处理该请求; - 它调用
HttpKernel
分派一些事件; - 第一个活动是
RequestEvent
; - 的
ControllerResolver: getController ()
方法被调用来确定哪个控制器应该呼吁传入的URL; - 的
ControllerResolver: getArguments ()
方法被调用,以确定哪些参数传递给控制器(param转换器); - 的
ConferenceController:指数()
方法和我们的大多数代码执行这个调用; - 的
ConferenceRepository: findAll ()
方法从数据库中获取所有会议(注意到数据库的连接PDO: __construct ()
); - 的
树枝\环境::渲染()
方法呈现模板; - 的
ResponseEvent
和FinishRequestEvent
派,但是看起来没有听众实际上是注册为执行他们似乎非常快。
时间是一个伟大的方式来理解一些代码是如何工作的;这是非常有用的,当你得到一个项目由别人。
现在,配置文件相同的页面在开发环境中从本地机器:
1
美元黑焰旋度的symfony varob娱乐下载:出口ob娱乐下载SYMFONY_PROJECT_DEFAULT_ROUTE_URL没有/
打开配置文件。你应该请求重定向到调用图认为真的是快速和时间轴很空:
你明白是怎么回事?启用了HTTP缓存,因此,我们在分析Symfony HTTP缓存层。ob娱乐下载的页面缓存,HttpCache \商店:restoreResponse ()
越来越的HTTP响应缓存控制器是从来不叫。
禁用缓存层公共/ index . php
正如我们在前一步骤,再试一次。你可以立即看到这个概要文件看起来很不同:
主要差异如下:
- 的
TerminateEvent
在生产中不可见,需要一个大比例的执行时间;仔细看,你可以看到这是事件负责存储Symfony分析器期间收集的数据请求;ob娱乐下载 - 下
ConferenceController:指数()
电话,注意到SubRequestHandler:处理()
方法,使应急服务国际公司(这就是为什么我们有两个要求分析器:saveProfile ()
主要,一个用于请求,一个用于应急服务国际公司)。
探索学习更多的时间;切换到调用图视图相同数据的不同表现。
正如我们刚才发现,开发和生产中执行的代码是完全不同的。开发环境是慢的Symfony分析器试图收集很多数据缓解调试问题。ob娱乐下载这就是为什么你应该总是与生产环境概要文件,甚至在本地。
一些有趣的实验:一个错误页面,配置文件/
(这是一个重定向页),或者一个API的资源。每个概要文件会告诉你更多关于Symfony是如何工作的,它被称为类/方法,什么是昂贵的运行和什么ob娱乐下载是便宜的。
使用黑焰调试插件
默认情况下,黑焰删除所有方法调用还不足以避免大载荷和大图形。当使用黑焰调试工具,最好是把所有电话。这是提供的调试插件。
从命令行,可以使用——调试
国旗:
1 2
美元黑焰,调试旋度的symfony var:ob娱乐下载出口ob娱乐下载SYMFONY_PROJECT_DEFAULT_ROUTE_URL没有/美元黑焰,调试卷symfony云:env: url—ob娱乐下载—管——主/ob直播app
在生产中,您会看到例如装运文件的命名.env.local.php
:
它来自哪里?平台。上海做一些优化当部署一个Symfony应用程序优化作曲家自动装卸机(ob娱乐下载——optimize-autoloader apcu-autoloader——classmap-authoritative
)。它还优化环境变量中定义.env
文件(以避免解析文件为每个请求)生成.env.local.php
文件:
1
美元ob娱乐下载symfony运行作曲家dump-env刺激
黑焰是一个功能非常强大的工具,可以帮助了解如何执行的PHP代码。提高性能只是一种使用分析器。
使用步骤和Xdebug调试器
黑焰时间和调用图允许开发人员可视化文件/函数/方法执行的PHP引擎更好地理解项目的代码库。
遵循代码执行的另一种方法是使用一个一步调试器就像Xdebug。一步调试器允许开发者交互地走过一个PHP项目代码调试控制流和检查数据结构。调试是非常有用的意想不到的行为,它取代了常见的“var_dump() /退出()”调试技术。
首先,安装xdebug
PHP扩展。检查安装通过运行下面的命令:
1
美元ob娱乐下载symfony php - v
您应该看到Xdebug的输出:
1 2 3 4 5 6
PHP 8.0.1 (cli)(建:2021年1月13日08:22:35)(nt)版权(c) PHP Zend引擎v4.0.1,版权(c) Zend技术和Zend OPcache v8.0.1,版权(c),通过与Xdebug v3.0.2 Zend Technologies,版权(c) 2002 - 2021,通过与黑焰戴瑞克Rethans v1.49.0 ~ linux-x64-non_zts80, https://blackfire。io,黑焰
您还可以检查是否启用了Xdebug PHP-FPM通过浏览器,点击“视图phpinfo()”的网络链接悬停在Symfony的标志调试工具栏:ob娱乐下载
现在,让调试
Xdebug方式:
默认情况下,Xdebug将数据发送给本地主机的9003端口。
触发Xdebug可以在很多方面,但最简单的是使用Xdebug从IDE。在这一章中,我们将使用Visual Studio代码来演示它是如何工作的。安装PHP调试通过启动“快速扩展开放”功能(Ctrl + P
),粘贴下面的命令,按回车:
1
ext安装felixfbecker.php-debug
创建以下配置文件:
从Visual Studio代码,在你的项目目录,去调试器并单击绿色播放按钮标签“监听Xdebug”:
如果你去浏览器和刷新,IDE自动应该重点,这意味着准备好调试会话。默认情况下,一切都是一个断点,所以在第一个指令停止执行。然后由你来检查当前的变量,单步执行代码,进入代码,…
在调试时,您可以取消“一切”断点和显式地在代码中设置断点。
如果你是新的调试器,阅读Visual Studio代码的优秀教程,这解释了视觉上的一切。
要进一步