Laravel 5.4 运行 `PHP artisan optimize` 不再生成编译文件

公司项目升级到 5.4 后 运行 optimize 命令得到如下输出

Generating optimized class loader
The compiled services file has been removed.

检查 bootstrap 目录下确实没有生成编译文件。以为是 APP_ENV 环境变量设置有误,检查无误。猜测是 5.4 移除了该功能,果然在 github 的 laravel/framework PR 上找到了答案。

Since Laravel 5.5 will be PHP 7.0+ it makes sense to remove this feature, since the best way to optimize performance in PHP 7 is just to correctly configure opcache to what's best for your server and websites.

这条建议被 Taylor 采纳并最终合并到了 5.4 ,坑爹的是 5.4 升级指南中并没有说明这一点。

所以现在开始忘记 optimize 命令吧,请使用字节码缓存 OPcache 替代。

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 8

这个4天前的 PR 在文档中增加了升级说明

8年前 评论

@milkmeowo ?看到了,只是官网文档还没更新

8年前 评论

@uicosp PR了就会同步更新到官网文档的,可能不小心看漏了吧,或者你遇到这问题的时候,还没有这个pr

8年前 评论

我记得5.1的代码中php artisan optimize只是对composer dump-autoload --optimize的一个封装

主要目的是为了生成vendor/composer下的一系列文件,

所以我一直执行的composer dump-autoload --optimize,bootstrap 的cache文件也从未生成,也没看出什么问题:smile: 。

请使用字节码缓存 OPcache 替代,这句话怎么理解? 只要使用opcache即可的意思?

8年前 评论

@member 对的,现在开始使用 opcache 就行了。实测当初次请求200ms左右时,后续请求耗时缩减到30ms。

8年前 评论

@member 5.1 是生成在storage/frameworks/ 下的

8年前 评论

php artisan opcache:optimize

Optimize started, this can take a while... The requested URL returned error: 500 Internal Server Error Url: 127.0.0.1/opcache-api/optimize?key=...

我的opcach出现这个问题

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!