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
Encountered problems after hands-on operation:
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):
Execute again The build command succeeds. [Recommendation: laravel video tutorial]
Verification results:
Configure laravels http server
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
composer require hhxsv5/laravel-sCopy
php artisan laravels publishCopy
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
(5) Enter the workspace container and start laravels
Enter container command:
docker exec -it d4940755a928 /bin/bashCopy
AB performance test results
1. The total number of requests is 100, The number of concurrency is 10 (swoole on the left, laravel9 on the right):
2. The total number of requests is 1000, and the number of concurrency is 20 (swoole on the left, laravel9 on the right) );
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!