摘要:因?yàn)闉閱蝹€(gè)請(qǐng)求創(chuàng)建的環(huán)境將在請(qǐng)求過程完成后立即銷毀??梢猿蔀閺?qiáng)大的性能增強(qiáng)器,提供了優(yōu)雅的結(jié)構(gòu)和代碼使用方式。你可以使用此命令快速安裝它,并訪問官方網(wǎng)站獲取更多信息。注意目前僅支持和。服務(wù)器不能使用?;鶞?zhǔn)測(cè)試使用進(jìn)行干凈的測(cè)試。
Swoole 是針對(duì)PHP的生產(chǎn)級(jí)異步編程框架。它是一種用純C語言編寫的PHP擴(kuò)展,它使PHP開發(fā)人員能夠在PHP中編寫高性能,可擴(kuò)展的并發(fā)TCP,UDP,Unix套接字,HTTP,WebSocket服務(wù),而無需太多的非阻塞I/O編程和Linux內(nèi)核知識(shí)。 你可以將Swoole想象成NodeJS,但是對(duì)于PHP來說,性能更高。
為什么要在Swoole上運(yùn)行Laravel下圖說明了PHP中的生命周期。 正如你所看到的,當(dāng)你每次運(yùn)行php腳本時(shí),PHP都需要初始化模塊并為你的運(yùn)行環(huán)境啟動(dòng)Zend Engine。 并且你的PHP腳本需要編譯為OpCodes以供Zend Engine執(zhí)行。
但是,這個(gè)生命周期需要在每個(gè)請(qǐng)求中重復(fù)一遍。因?yàn)闉閱蝹€(gè)請(qǐng)求創(chuàng)建的環(huán)境將在請(qǐng)求過程完成后立即銷毀。
換句話說,在傳統(tǒng)的PHP生命周期中,它浪費(fèi)了大量時(shí)間為腳本執(zhí)行構(gòu)建和銷毀資源。 想象一下像 Laravel 這樣的框架,需要為一個(gè)請(qǐng)求加載多少個(gè)文件? 加載文件也有很多I/O消耗。
那么如果我們?cè)赟woole之上有一個(gè)內(nèi)置的服務(wù)器,并且所有的腳本可以在第一次加載后保存在內(nèi)存中呢? 這就是我們?cè)噲D在Swoole上運(yùn)行Laravel的原因。 Swoole可以成為強(qiáng)大的性能增強(qiáng)器,Laravel提供了優(yōu)雅的結(jié)構(gòu)和代碼使用方式。 這是一個(gè)完美的組合!
安裝以下是 swooletw/laravel-swoole 的主要特點(diǎn):
在Swoole上運(yùn)行 Laravel/Lumen 應(yīng)用程序
卓越的性能提升至 30倍
沙箱模式隔離應(yīng)用程序容器
支持在Laravel中運(yùn)行WebSocket服務(wù)器
支持Socket.io協(xié)議
支持Swoole表進(jìn)行跨進(jìn)程數(shù)據(jù)共享
使用Composer安裝:
composer require swooletw/laravel-swoole -vvv
這個(gè)軟件包依賴于Swoole。請(qǐng)確保你的機(jī)器具有Swoole擴(kuò)展。你可以使用此命令快速安裝它:pecl install swoole,并訪問官方網(wǎng)站獲取更多信息。
注意:Swoole目前僅支持Linux和macOS。 Windows服務(wù)器不能使用Swoole。
然后,添加服務(wù)提供者:
如果你使用的是Laravel,請(qǐng)將服務(wù)提供者添加到 config/app.php 中提供者的數(shù)組中:
[ "providers" => [ SwooleTWHttpLaravelServiceProvider::class, ], ]
如果您使用的是 Lumen,請(qǐng)將以下代碼附加到 bootstrap/app.php:
$app->register(SwooleTWHttpLumenServiceProvider::class);
它支持包自動(dòng)發(fā)現(xiàn)。如果你運(yùn)行的是Laravel 5.5,則可以跳過此步驟。啟動(dòng)和運(yùn)行
現(xiàn)在,你可以運(yùn)行以下命令來啟動(dòng)Swoole HTTP服務(wù)器。
php artisan swoole:http start
然后你可以看到以下消息:
Starting swoole http server... Swoole http server started:
現(xiàn)在你可以在 http://127.0.0.1:1215 上訪問你的Laravel應(yīng)用程序。
基準(zhǔn)測(cè)試使用MacBook Air 13,2015進(jìn)行干凈的Lumen 5.5測(cè)試。
基準(zhǔn)測(cè)試工具:wrk
wrk -t4 -c100 http://your.appNginx with FPM
Running 10s test @ http://lumen.app:9999 4 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 1.14s 191.03ms 1.40s 90.31% Req/Sec 22.65 10.65 50.00 65.31% 815 requests in 10.07s, 223.65KB read Requests/sec: 80.93 Transfer/sec: 22.21KBSwoole HTTP Server
Running 10s test @ http://127.0.0.1:1215 4 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 11.58ms 4.74ms 68.73ms 81.63% Req/Sec 2.19k 357.43 2.90k 69.50% 87879 requests in 10.08s, 15.67MB read Requests/sec: 8717.00 Transfer/sec: 1.55MB更多
查看 Github Repo 和官方文檔獲取更多信息。
原文地址,請(qǐng)前往 PHPCasts
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30730.html
摘要:是為開發(fā)的生產(chǎn)級(jí)異步編程框架。因?yàn)閱蝹€(gè)請(qǐng)求創(chuàng)建的環(huán)境在請(qǐng)求執(zhí)行結(jié)束后會(huì)立即銷毀??梢蕴峁?qiáng)大性能而則可以提供優(yōu)雅代碼結(jié)構(gòu)使用。在使用這個(gè)包之前,請(qǐng)確保你的機(jī)器安裝了正確的。建立并運(yùn)行起來現(xiàn)在,你可以執(zhí)行以下的命令來啟動(dòng)服務(wù)。 showImg(https://segmentfault.com/img/bVbaF89?w=1240&h=634); Swoole?是為 PHP 開發(fā)的生產(chǎn)級(jí)異...
摘要:負(fù)責(zé)解釋執(zhí)行文件生成響應(yīng),最終返回給,展現(xiàn)至前端。相比于傳統(tǒng)架構(gòu),進(jìn)程模型最大的特點(diǎn)在于其多線程模式處理網(wǎng)絡(luò)請(qǐng)求,使得其能輕松應(yīng)對(duì)大量連接。這要求開發(fā)人員對(duì)于多進(jìn)程的運(yùn)行模式有更清晰的認(rèn)識(shí)更容易內(nèi)存泄露。 一、SwooleSwoole號(hào)稱重新定義了PHP,它是一個(gè)PHP擴(kuò)展,使得PHP可以使用異步的方式執(zhí)行,就像node一樣,而且還能使用socket,為PHP提供了一系列異步IO、事件...
摘要:如需要支持熱啟動(dòng),請(qǐng)自行谷歌,大概原理就是用監(jiān)控文件變更,如果更新了重啟如果正式環(huán)境中還可以自己寫個(gè)部署腳本,后重啟服務(wù)等,方法很多不一一列舉。 1 Laravel的速度瓶頸在哪? 1.1 已有的一些優(yōu)化方法 1.1.1 laravel官方提供了一些優(yōu)化laravel的優(yōu)化方法 php artisan optimize php artisan config:cache php arti...
摘要:使用改造應(yīng)用標(biāo)簽空格分隔概述介紹是為開發(fā)的生產(chǎn)級(jí)異步編程框架。然后你可以看到以下信息現(xiàn)在可以通過訪問來進(jìn)入應(yīng)用。 使用swoole改造laravel應(yīng)用 標(biāo)簽(空格分隔): php 1. 概述 1.1 swoole介紹 Swoole 是為 PHP 開發(fā)的生產(chǎn)級(jí)異步編程框架。 他是一個(gè)純 C 開發(fā)的擴(kuò)展, 他允許 PHP 開發(fā)者在 PHP 中寫 高性能,可擴(kuò)展的并發(fā) TCP, UDP,...
閱讀 3461·2019-08-30 10:54
閱讀 3157·2019-08-29 16:38
閱讀 2181·2019-08-26 14:06
閱讀 1520·2019-08-23 15:39
閱讀 3044·2019-08-23 15:37
閱讀 2889·2019-08-23 13:50
閱讀 3196·2019-08-22 17:14
閱讀 2389·2019-08-22 15:44