0

我使用 Windows 10 (WSL 2)。我的硬件是:

Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 2.60 GHz RAM 8.00GB SSD

实际上,如果您有兴趣,这是一台游戏笔记本电脑(MSI GL 65 95CK)。

我决定安装 Laravel,查看文档并实施描述的步骤:

  1. 在 WSL 终端中(我使用 Ubuntu)curl -s "https://laravel.build/example-app?with=mysql,redis" | bash
  2. cd example-app && /vendor/bin/sail up

我打开浏览器,发现主页花了将近 1 秒的时间来渲染!有时甚至两秒钟! 在此处输入图像描述

我想,“好吧,也许框架处于未优化模式。调试等”,并决定转为APP_DEBUG. 我还删除了所有路由并改为:.envfalse

Route::get('/', [\App\Http\Controllers\TestController::class, 'test']);

在此之前,我创建了TestController

class TestController extends Controller
{
    public function test() {
        return response()->json([
            'name' => 'Abigail',
            'state' => 'CA',
        ]);
    }
}

然后我运行php artisan optimaze,在浏览器中打开http://localhost/api

结果是一个很大的悲伤:

在此处输入图像描述

为什么是 800 毫秒?我什么也没有做过。好的,我决定只是重命名index.php文件public夹中的文件index2,例如,放置一个index.php带有数组打印的新文件,只是为了测试这是 Laravel 问题还是这只是基础设施问题。

index.php

在此处输入图像描述

好多了!然后我想,“让我们与另一个框架进行比较,例如 .NET Core”。我做了一个非常简单的 Web Api 项目。控制器:

namespace MockWebApi.Controllers
{
    [ApiController]
    [Route("")]
    public class MainController : ControllerBase
    {
        [Route("test")]
        public IActionResult Test()
        {
            return Ok(new
            {
                Test = "hello world!!!"
            });
        }
    }
}

结果是:

在此处输入图像描述

好吧,你可以说这是一种编译语言。我决定检查 Node.js 和 Express:

代码:

router.get('/', function(req, res, next) {
  res.json({"test": "123"})
});

结果:

在此处输入图像描述

如您所见,在这种情况下,Node 与 C# 一样快。

那么,Laravel 有什么问题呢?我在安装过程中遗漏了什么吗?

更新

我在没有 Sail 的情况下提出了 Laravel。我的码头工人撰写文件:

version: '3'
services:
  php-fpm:
    build:
      context: docker/php-fpm
    volumes:
      - ./:/var/www
    networks:
      - internal

  nginx:
    build:
      context: docker/nginx
    volumes:
      - ./:/var/www
    ports:
      - "80:80"
    depends_on:
      - php-fpm
    networks:
      - internal

networks:
  internal:
    driver: bridge

Nginx Docker 文件:

FROM nginx

ADD ./default.conf /etc/nginx/conf.d/default.conf

WORKDIR /var/www

Nginx 配置:

server {
    listen 80;
    index index.php;
    server_name 127.0.0.1 localhost;
    root /var/www/public;

    location / {
        try_files $uri /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        fastcgi_read_timeout 1000;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

php-fpm Dockerfile:

FROM php:7.4-fpm

RUN apt-get update && apt-get install -y wget git unzip \
    && apt-get install libpq-dev -y 

RUN wget https://getcomposer.org/installer -O - -q \
    | php -- --install-dir=/bin --filename=composer --quiet

RUN groupadd -r -g 1000 developer && useradd -r -u 1000 -g developer developer

USER developer
WORKDIR /var/www

我没有得到任何性能改进(

4

1 回答 1

-1

没有什么可疑的,Laravel 就是这么慢。将 PHP/Laravel 与 Node.js/Express 进行比较就像将您的祖母与 Husain Bolt 进行比较(非常尊重您的祖母)。

人们选择 Laravel 并不是因为他们希望他们的应用程序速度快。他们选择它,因为他们很懒惰。这就像框架世界中的 Wordpress。很酷的魔法功能,你知道的。

于 2021-11-18T10:29:02.553 回答