Home >PHP Framework >Laravel >Performance competition between laravel9 and laravels!

Performance competition between laravel9 and laravels!

藏色散人
藏色散人forward
2022-11-28 16:14:452290browse

Foreword: I recently wanted to use swoole to try websocket. I just installed and tested the performance of laravel and swoole. I don’t know if the performance of laravel9 is optimized well. The final stress test results are similar to those of laravels~

Laradock installed swoole

Performance competition between laravel9 and laravels!

Encountered problems after hands-on operation:
Performance competition between laravel9 and laravels!

Because of the original PHP The version is 7.4. You need to modify the .env file and switch the version to 8.0 and above (Laravels requires php to be 8.1 when installed, so it is still set to version 8.1):
Performance competition between laravel9 and laravels!

Execute again The build command succeeds. [Recommendation: laravel video tutorial]

Verification results:
Performance competition between laravel9 and laravels!

Configure laravels http server

1. Install laravel project

There are many tutorials, here you can refer to: Laravel 9 Chinese Document - Installation

Based on the environment where docker is installed

curl -s "https://laravel.build/laravel9" | bashCopy

2. Install laravels

composer require hhxsv5/laravel-sCopy

3. Publish laravels configuration

php artisan laravels publishCopy

4. Configuring the site

Instructions: The project codes corresponding to the site are/var/www/laravel9/public

(1) Configure laravels http server

upstream laravels {
    # Connect IP:Port
    server workspace:5200 weight=5 max_fails=3 fail_timeout=30s;
    keepalive 16;
}
server {
    listen 80;

    server_name swoole.test;
    root /var/www/laravel9/public;
    index index.php index.html index.htm;

    # Nginx 处理静态资源,LaravelS 处理动态资源
    location / {
        try_files $uri @laravels;
    }

    location @laravels {
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-PORT $remote_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header Scheme $scheme;
        proxy_set_header Server-Protocol $server_protocol;
        proxy_set_header Server-Name $server_name;
        proxy_set_header Server-Addr $server_addr;
        proxy_set_header Server-Port $server_port;
        proxy_pass http://laravels;
    }

    error_log /var/log/nginx/swoole_test_error.log;
    access_log /var/log/nginx/swoole_test_access.log;
}

Note: laravels project You need to add the following configuration to the .env file under the laravel9 project:

LARAVELS_LISTEN_IP=workspace
LARAVELS_DAEMONIZE=trueCopy

(2) Configure the normal laravel project site

server {

    listen 80;
    listen [::]:80;

    # For https
    # listen 443 ssl;
    # listen [::]:443 ssl ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name laravel.test;
    root /var/www/laravel9/public;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }

    error_log /var/log/nginx/laravel_error.log;
    access_log /var/log/nginx/laravel_access.log;
}

(3) Local host configuration

127.0.0.1 swoole.test127.0.0.1 laravel.testCopy

(4) Rebuild the container

docker-compose stop
docker-compose build workspace nginx
docker-compose up -d redis mysql nginx workspaceCopy

Performance competition between laravel9 and laravels!

(5) Enter the workspace container and start laravels

Enter container command:

docker exec -it d4940755a928 /bin/bashCopy

Performance competition between laravel9 and laravels!

AB performance test results

  • Core Concern is the number of requests per second (Requests per second)
  • They are all based on the Laradock environment
  • Share the same project code

1. The total number of requests is 100, The number of concurrency is 10 (swoole on the left, laravel9 on the right):
Performance competition between laravel9 and laravels!

2. The total number of requests is 1000, and the number of concurrency is 20 (swoole on the left, laravel9 on the right) );
Performance competition between laravel9 and laravels!

The gap is not obvious, and sometimes the results of laravel9 are even better. Is such a result considered an overturn~

Original address: https://learnku.com /articles/73575

The above is the detailed content of Performance competition between laravel9 and laravels!. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:learnku.com. If there is any infringement, please contact admin@php.cn delete