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 替代。
关于 LearnKu
这个4天前的 PR 在文档中增加了升级说明
@milkmeowo ?看到了,只是官网文档还没更新
@uicosp PR了就会同步更新到官网文档的,可能不小心看漏了吧,或者你遇到这问题的时候,还没有这个pr
@milkmeowo 现在看到了
我记得5.1的代码中
php artisan optimize只是对composer dump-autoload --optimize的一个封装主要目的是为了生成
vendor/composer下的一系列文件,所以我一直执行的
composer dump-autoload --optimize,bootstrap 的cache文件也从未生成,也没看出什么问题:smile: 。请使用字节码缓存 OPcache 替代,这句话怎么理解? 只要使用opcache即可的意思?
@member 对的,现在开始使用 opcache 就行了。实测当初次请求200ms左右时,后续请求耗时缩减到30ms。
@member 5.1 是生成在storage/frameworks/ 下的
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出现这个问题