なぜPHPプログラマはSwooleを使用することを学ぶ必要があります

最後の2ヶ月はSwooleを勉強してきた、研究成果が正式6.21オープンソースでリリースされる、この時間は、それの水今日に休日を利用して、何の流出の記事はありません。

この記事では、私はより多くの人にアムウェイをSwooleできるようにしたいです。Swooleは、現在の位置決めは、いくつかのシニアphperのおもちゃであってもよいが、下の困難なように、いくつかのシナリオは無知に見えることを余儀なくされるかもしれないが、実際にはそれほど難しいことではありません。

自己紹介Swoole公式サイトでは、それは、HTTP、TCP、UDP、WebSocketをサポートしたWebアプリケーション開発ツールである「非同期通信網の生産環境のためのPHPエンジン」、最初のSwooleです。

Swooleと私たちの伝統的なPHP開発者の違いは、概念を理解する必要もあり、そこにあります。現時点では、いくつかの使用ベースのフレームワークは、TP、同様のLVフレームワークの習慣や伝統の開発から、そして、Swooleを開発しました。

なぜSwooleを使うのか?

ゆう実行は、以下の点を考えます:

  • 繰り返し荷重のパフォーマンスコストを回避するための恒久的なメモリ、大規模なパフォーマンスを向上させます

  • コルーチン非同期向上I / O(例えば:マイクロチャンネル、支払い、ログインなどの開発)集中並行処理のシナリオ

  • 簡単に、HTTP、WebSocketを、TCP、UDP、およびその他のアプリケーションを開発するハードウェアと通信することができます

  • 現実になるためのPHPサービス高性能マイクロアーキテクチャ

パーマネントメモリ

現時点では、各要求を処理する前に、伝統的なPHPフレームワーク、フレームワークの文書、動作構成をロードし、再びそれをしなければなりません。これは、パフォーマンス上の問題の主な原因となっている可能性があり、Swooleは問題ではありません使用は、一度に複数回ロード。

コルーチン

以下に示すように、このシーンは、従来の同期ブロックおよび非同期コルーチンの優位性が出て反映され、そのようなあなたが他のAPIインターフェイスを呼び出したり、大きなファイルを読み書きする必要があるインターフェイスとして同時要求を処理する同じスレッドです。

詳細SwooleはなぜI / O集中型のシーンのためにコルーチン

コルーチンを言えば、あなたは簡単にプロセスとスレッドについて話をする必要があり、プロセスは、多数のプロセスを作成するための要求を処理するために、リソースを消費する非常によく知られている確かにろうそくの価値があります。マルチスレッドアプリケーションがますますで、複数回作成したいくつかのタスク、スレッドを実行するCPUコアにいくつかのレベルがあり、スレッドスケジューリングの損失が存在することになります。

コルーチンは、単一のスレッドに基づいて達成され、それがCPUリソースを最大限に活用することができ、およびI / Oのを待っている間に無駄になりません もちろん、コドライブの数はもっと多くのメモリを取るが、これはプロセスとスレッドに比べて、許容され、資源が比較的小さい占有しました。

コルーチンが自動的にコルーチンを中断し、要求インタフェースのシーン、ファイルを読み書き遭遇使用する場合は、CPUのコルーチンは、シングルスレッドのCPUリソースの利用率を向上させることができ、他のタスクを与え、廃棄物の削減、パフォーマンスを向上させます。

コルーチンコード例:

<?php
use Swoole\Coroutine as co;
 
// 协程
$time = microtime(true);
// 创建10个协程
for($i = 0; $i < 10; ++$i)
{
    // 创建协程
    go(function() use($i){
        co::sleep(1.0); // 模拟请求接口、读写文件等I/O
        echo $i, PHP_EOL;
    });
}
swoole_event_wait();
echo 'co time:', microtime(true) - $time, ' s', PHP_EOL;
 
// 同步
$time = microtime(true);
// 创建10个协程
for($i = 0; $i < 10; ++$i)
{
    sleep(1); // 模拟请求接口、读写文件等I/O
    echo $i, PHP_EOL;
}
echo 'sync time:', microtime(true) - $time, ' s', PHP_EOL;

結果:

0
9
8
7
6
5
4
3
2
1
co time:1.0087130069733 s
0
1
2
3
4
5
6
7
8
9
sync time:10.010055065155 s

上記の結果から分かるように、コルーチンの実行は、睡眠が他のコルーチンに右ねじでタスクを実行する順次、高性能ではありません。

HTTPサービスの作成

実際には、難しいことではないコードを見て、想像します:

$http = new swoole_http_server("127.0.0.1", 9501);
$http->on('request', function ($request, $response) {
    $response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
});
$http->start();

マイクロサービス

2008から今日までタールテンセントは、統一されたアプリケーションフレームワークTAF(合計アプリケーションフレームワーク)を使用層の背後にあるロジックであったが、現在はC ++やJava、PHP、Nodejs言語をサポートしています。フレームワークは、完全なソリューションをユーザーに提供し、開発、運用、保守を必要とし、製品またはサービスのテストは、オンライン迅速な開発、展開、テストを支援します。これは、スケーラブルなプロトコルコーデック、高性能RPC通信フレームワーク、ルートの名前を組み合わせて、リリースのモニタリングを発見し、統計情報を記録、構成管理は、迅速マイクロサービスの利用を通して、あなた自身の安定性と信頼性の高い分散アプリケーションを構築することができるものである、と完全かつ効果的なサービスのガバナンスを実現。

参照:https://segmentfault.com/a/1190000011825769

間違ったことを歓迎した場合、私は本当にSwooleをお勧めしたいと思います!

ます。https://my.oschina.net/yurun/blog/1831238で再現

おすすめ

転載: blog.csdn.net/weixin_34384915/article/details/91725914