env('APP_DEBUG',1)和Log :: debug如何影响Lumen / Laravel的性能?

时间:2019-02-12 09:13:20

标签: laravel lumen

我正在使用Lumen&Laravel构建应用程序,并且在许多地方都使用env和Log :: debug

现在,当我将应用程序推入生产环境时,env和Log :: debug会影响性能吗?

我应该去替换它们在代码中吗?

谢谢

2 个答案:

答案 0 :(得分:1)

首先,除了配置文件中的任何地方,您都不应使用env()帮助程序。这仅是使用env变量填充配置文件的一种方法。这主要是由于配置缓存所致,您可以在https://laravel.com/docs/5.7/configuration#configuration-caching上了解更多信息。

因此,应该使用env('APP_DEBUG',1)来代替1,如果有配置缓存,它将总是返回config('app.debug',1)

现在,在谈论您对表演的关注时,将某些内容放入日志中需要付出一定的代价。简而言之,我只是不知道,所以我对当前打开的无用盒进行了简单的测试。

for($i = 0; $i < 100000; $i++){ Log::debug("helloworld"); }; => 7.7秒

for($i = 0; $i < 100000; $i++){}; => 0.0007秒

也就是说,在实际的用例中,您很少进行这种循环,添加日志的好处是值得的。在这里,添加Log每次迭代花费0.00007 s,实际上并不多。

访问配置咆哮是几乎没有成本的,因为相同的测试要进行10万次迭代,需要0.1713秒:)

答案 1 :(得分:1)

Laravel的日志基本上执行文件写入操作,或者可能像对日志通知的延迟那样对系统进行第三方调用。这取决于您为哪个日志级别设置了哪些驱动程序。 more info

  • 具有Log:debug()实时记录自定义消息/调试跟踪不会对相当数量的请求产生太大影响,但是如果它在每个页面的页眉/页脚中,并且每秒有1000个调用,我想说的是每个请求的额外日志记录操作。
  • 但也取决于您要记录的内容。如果它是一个字符串味精然后 很好,但是您正在记录一个大集合对象,那么我会 表示这会对请求的响应时间产生一些影响。

  • 第二,APP_DEBUG是一个标志,某些软件包使用它来另外计算并为您提供有助于开发的信息。例如barryvdh/laravel-debugbar之类的软件包。如果您在APP_DEBUG=true的生产环境中启用了此类软件包,那么这将消耗大量额外的内存。

  • APP_DEBUG还会转储带有异常堆栈跟踪的错误。在生产中,您可能希望隐藏该信息,而仅显示标准错误页面。因此,我鼓励您实时停用APP_DEBUG = false。