我正在使用Lumen&Laravel构建应用程序,并且在许多地方都使用env和Log :: debug
现在,当我将应用程序推入生产环境时,env和Log :: debug会影响性能吗?
我应该去替换它们在代码中吗?
谢谢
答案 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。