首页
Preview

使用Laravel-Octane在Swoole服务器上运行您的Laravel应用程序。

如我们所知,PHP是一种解释型语言,这意味着当PHP脚本运行时,解释器负责对代码进行解析、编译和执行,这会导致浪费CPU资源和额外的时间。

在这里,Swoole就来帮助我们了,Swoole专为构建大规模并发系统而设计,它只加载一次应用程序,并将其保存在内存中,为所有请求提供服务,而无需在每个请求上启动应用程序。

基本上,Swoole是一个扩展PHP核心的PHP扩展,利用了操作系统提供的更多功能。

让我们立即通过使用“Laravel Octane”在Laravel应用程序中实现Swoole。

内容概述:

  • Swoole安装。
  • Laravel-octane安装。
  • Supervisor安装,用于在Swoole上运行Laravel应用程序。
  • “wrk”——用于检查服务器负载的HTTP基准测试工具。
  • 作为代理在Nginx或Apache后面提供Laravel-octane应用程序。

先决条件:

你的Laravel应用程序应该在Nginx或Apache上运行。(假设你的Laravel应用程序在本地机器上的_http://test-app.test/_上运行)

步骤1:在Ubuntu上安装Swoole。

要安装PHP 8.0的Swoole,请运行以下命令-

# Install Swoole as PHP extension
sudo apt install php8.0-swoole# Verify Swoole is loaded
php -m | grep swoole

要使用PECL安装Swoole-

# Install PECL 
sudo apt install php-dev# Install Swoole via PECL
sudo pecl install swoole

步骤2:在Laravel应用程序中安装Laravel-Octane。

通过使用Composer安装laravel-octane-

composer require laravel/octane

现在,你可以通过Octane运行和检查Laravel应用程序-

php artisan octane:start --server=swoole --port=8089

步骤3:安装Supervisor。

由于我们需要一种方法来一直保持“octane:start”进程运行,因此我们需要Supervisor(或任何进程管理器)来在Swoole上运行Laravel应用程序。

要在Ubuntu机器上安装Supervisor,你应该运行以下命令:

# Install
sudo apt-get install supervisor -y# Verify the above installation
supervisord -v# Check the status of Supervisor service
sudo systemctl status supervisor

现在,进入“/etc/supervisor/conf.d”目录,并创建一个新的Laravel-Octane工作程序,如下所示:

[program:laravel-octane-worker]process_name=%(program_name)s_%(process_num)02dcommand=php path_of_laravel_project/artisan octane:start --server=swoole --max-requests=1000 --workers=4 --task-workers=12 --port=8089autostart=true
autorestart=true
user=www-data
redirect_stderr=true
stdout_logfile=any_existing_path/laravel-octane-worker.log​
stopwaitsecs=3600

如上所述,在上面的工作程序中,Laravel应用程序正在Swoole上运行,你可以在“http://127.0.0.1:8089”上检查它。

请记住,在上面的工作程序中,你需要替换“path_of_laravel_project”和“stdout_logfile”的路径。

运行以下命令以执行上述工作程序:

# Inform supervisor to read workers again.
sudo supervisorctl reread# Tell supervisor to bring the changes into effect
sudo supervisorctl update# Restart supervisor service
sudo supervisorctl restart all

步骤4:使用HTTP基准测试工具进行服务器负载测试。

你可以安装“wrk”(或任何其他)HTTP基准测试工具,以检查运行在Nginx+PHP-FPM和Swoole上的应用程序的负载。

运行以下命令以检查在使用Nginx+PHP-FPM运行的Laravel应用程序上的负载:

wrk -t 4 -c 100 -d30s http://test-app.test

上面命令的结果会像下面这样:

在上面的截图中,你可以看到Nginx+PHP-FPM能够处理257个请求每秒。

现在,让我们尝试运行在使用Swoole服务器的http://127.0.0.1:8089上的laravel-octane应用程序:

在上面的截图中,你可以看到Swoole服务器能够处理每秒414个请求,比Nginx快得多。

步骤5:作为代理在Nginx或Apache后面提供Laravel-octane应用程序。

在“/etc/nginx/sites-enabled”中的Nginx主机文件中添加代理= http://127.0.0.1:8089,如下所示:

server {
    listen 80;
    server_name test-app.test;
    root path_of_your_laravel_app_directory/public;    index index.html index.htm index.php;    error_page 404 /index.php;    location / {
        proxy_pass    http://127.0.0.1:8089;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

在这里,Nginx正在为运行在端口8089上的Swoole服务器提供代理请求,这意味着现在http://test-app.test实际上正在Swoole服务器上运行。

同样,如果你正在使用Apache作为Web服务器,则可以添加如下代理:

<VirtualHost *:80>
    ProxyPreserveHost On    ProxyPass / http://127.0.0.1:8089/
    ProxyPassReverse / http://127.0.0.1:8089/    ServerName test-app.test
    ServerAdmin admin@localhost
    DocumentRoot path_of_your_laravel_app_directory/public;    <Directory path_of_your_laravel_app_directory/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

结论:

在上面的教程中,我们讨论了如何使用Swoole而不是Nginx+PHP-FPM来提高应用程序的性能。对于PHP开发人员来说,这是一个巨大的改变,特别是考虑到请求的生命周期。

译自:https://medium.com/@nishantsoni28/run-your-laravel-application-on-the-swoole-server-with-laravel-octane-5670cc285115

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
anko
宽以待人处事,严于律己修身。

评论(0)

添加评论