laravel很慢_记一次 Laravel 应用性能调优经历

这是一份事后的总结。在经历了调优过程踩的很多坑之后,我们最终完善并实施了初步的性能测试方案,通过真实的测试数据归纳出了 Laravel 开发过程中的一些实践技巧。

0x00 源起

最近有同事反馈 Laravel 写的应用程序响应有点慢、20几个并发把 CPU 跑满... 为了解决慢的问题,甚至一部分接口用 nodejs 来写。

而我的第一反应是一个流行的框架怎么可能会有这么不堪?一定是使用上哪里出现了问题。为了一探究竟,于是开启了这次 Laravel 应用性能调优之旅。

0x01 调优技巧

这次性能测试方案中用到的优化技巧主要基于 Laravel 框架本身及其提供的工具。

关闭应用debug app.debug=false

缓存配置信息 php artisan config:cache

缓存路由信息 php artisan router:cache

类映射加载优化 php artisan optimize

自动加载优化 composer dumpautoload

根据需要只加载必要的中间件

使用即时编译器(JIT),如:HHVM、OPcache

使用 PHP 7.x

除了以上优化技巧之外,还有很多编码上的实践可以提升 Laravel 应用性能,在本文中暂时不会做说明。(也可以关注我的后续文章)

1. 关闭应用 debug

打开应用根目录下的 .env 文件,把 debug 设置为 false。

APP_DEBUG=false

2. 缓存配置信息

php artisan config:cache

运行以上命令可以把 config 文件夹里所有配置信息合并到一个 bootstrap/cache/config.php 文件中,减少运行时载入文件的数量。

php artisan config:clear

运行以上命令可以清除配置信息的缓存,也就是删除 bootstrap/cache/config.php 文件

3. 缓存路由信息

php artisan route:cache

运行以上命令会生成文件 bootstrap/cache/routes.php。路由缓存可以有效的提高路由器的注册效率,在大型应用程序中效果越加明显。

php artisan route:clear

运行以上命令会清除路由缓存,也就是删除 bootstrap/cache/routes.php 文件。

4. 类映射加载优化

php artisan optimize --force

运行以上命令能够把常用加载的类合并到一个文件中,通过减少文件的加载来提高运行效率。这个命令会生成 bootstrap/cache/compiled.php 和 bootstrap/cache/services.json 两个文件。

通过修改 config/compile.php 文件可以添加要合并的类。

在生产环境中不需要指定 --force 参数文件也可以自动生成。

php artisan clear-compiled

运行以上命令会清除类映射加载优化,也就是删除 bootstrap/cache/compiled.php 和 bootstrap/cache/services.json 两个文件。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel 中,异常处理是非常重要的。Laravel 提供了一种方便的方式来捕获、处理和创建异常。 首先,让我们来看一下如何捕获异常。Laravel 中的异常处理器是通过 Exception 类来实现的。当 Laravel 应用程序中的异常被抛出时,这些异常将被传递给 Exception 类。我们可以通过在应用程序中注册异常处理器来处理这些异常。这可以通过在 app/Exceptions/Handler.php 文件中编写代码来完成。 下面是一个例子: ```php <?php namespace App\Exceptions; use Exception; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; class Handler extends ExceptionHandler { public function render($request, Exception $exception) { if ($exception instanceof CustomException) { return response()->view('errors.custom', [], 500); } return parent::render($request, $exception); } } ``` 在这个例子中,我们重写了 render 方法,并检查抛出的异常是否是 CustomException 类型。如果是,我们将返回一个自定义的错误视图,否则返回默认的错误视图。 接下来,让我们来看一下如何处理异常。在 Laravel 中,我们可以通过 try-catch 语句来处理异常。例如: ```php try { // Some code } catch (Exception $e) { // Handle exception } ``` 在这个例子中,我们将一些代码包装在 try 块中。如果在 try 块中抛出了异常,它将被捕获并传递给 catch 块。在 catch 块中,我们可以编写代码来处理异常。 最后,让我们看一下如何创建异常。在 Laravel 中,我们可以通过继承 Exception 类来创建自定义异常。例如: ```php <?php namespace App\Exceptions; use Exception; class CustomException extends Exception { public function __construct($message = "", $code = 0, Throwable $previous = null) { parent::__construct($message, $code, $previous); } } ``` 在这个例子中,我们创建了一个 CustomException 类,它继承自 Exception 类。我们还为该类定义了一个构造函数,它接受消息、代码和前一个异常作为参数。 总之,Laravel 中的异常处理非常重要。通过捕获、处理和创建异常,我们可以更好地管理我们的应用程序并提供更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值