Home > PHP Framework > Laravel > body text

Performance competition between laravel9 and laravels!

藏色散人
Release: 2022-11-28 20:41:10
forward
2269 people have browsed it

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
Copy after login

2. Install laravels

composer require hhxsv5/laravel-sCopy
Copy after login

3. Publish laravels configuration

php artisan laravels publishCopy
Copy after login

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;
}
Copy after login

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
Copy after login

(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;
}
Copy after login

(3) Local host configuration

127.0.0.1 swoole.test127.0.0.1 laravel.testCopy
Copy after login

(4) Rebuild the container

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

Performance competition between laravel9 and laravels!

(5) Enter the workspace container and start laravels

Enter container command:

docker exec -it d4940755a928 /bin/bashCopy
Copy after login

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!

Related labels:
source:learnku.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template