ホームページ > 記事 > PHPフレームワーク > swooleはオープンソースですか?
swoole は PHP 上で動作する拡張機能で、実は通常の拡張機能とは異なります。通常の拡張機能はライブラリ関数を提供するだけです。 swoole 拡張機能は PHP の制御を引き継ぎ、実行後にイベント ループに入ります。 IO イベントが発生すると、swoole は指定された PHP 関数を自動的にコールバックします。 (推奨学習: swoole ビデオ チュートリアル )
PHP の非同期、並列、高性能ネットワーク通信エンジンは純粋な C 言語で書かれており、PHP 言語で非同期マルチスレッド サーバーを提供します。 TCP /UDP ネットワーク クライアント、非同期 MySQL、非同期 Redis、データベース接続プール、AsyncTask、メッセージ キュー、ミリ秒タイマー、非同期ファイルの読み取りと書き込み、非同期 DNS クエリ。
Swoole には、HTTP/WebSocket サーバー/クライアントおよび Http2.0 サーバーが組み込まれています。
Swoole は、インターネット、モバイル通信、エンタープライズ ソフトウェア、オンライン ゲーム、モノのインターネット、車両のインターネット、スマート ホームなどの分野で広く使用できます。 PHP Swoole をネットワーク通信フレームワークとして使用すると、企業の IT 研究開発チームの効率が大幅に向上し、革新的な製品の開発にさらに集中できます。
Swoole には、下部に非同期ノンブロッキングのマルチスレッド ネットワーク IO サーバーが組み込まれています。 PHP プログラマはイベント コールバックを処理するだけでよく、基礎となる層について気にする必要はありません。 Nginx/Tornado/Node.js などの完全非同期フレームワークとは異なり、Swoole は完全非同期と同期の両方をサポートします。
Swoole はオープンソースのフリーソフトウェアであり、ライセンス契約は Apache2.0 です。企業開発者と個人開発者の両方が Swoole のコードを無料で使用でき、Swoole で行われた変更はオープンソースなしで商用製品に使用できます (注: 元の作成者の著作権表示は保持する必要があります)。
Swoole の実装
Swoole は純粋な C で書かれており、他のサードパーティ ライブラリには依存しません。
swoole は libevent を使用しないため、libevent をインストールする必要はありません
swoole は PHP の stream/sockets/pcntl/posix/sysvmsg およびその他の拡張機能に依存しません
socket パート
swoole は、基礎となるソケット システム コールを使用します。 sys/socket.h
IO イベント ループ
メイン プロセスのイベント ループは、select/poll を使用します。これは、メイン プロセスには少数のファイル記述子しかないためです。スレッド、使用する Just select/poll
リアクター スレッド/ワーカー プロセスで epoll/kqueue を使用する
タスク プロセスにはイベント ループがなく、プロセスは循環して読み取りパイプをブロックします。
多くの人は strace -p を使用して swoole のメインプロセスを表示しますが、poll システムコールのみが表示されます。正しい表示方法は strace -f -p
複数のプロセス/マルチスレッド
複数のプロセスは fork() システム コールを使用します
Multipleスレッドは pthread スレッド ライブラリを使用します。
EventFd
Swoole は、スレッド/プロセス間メッセージ通知のメカニズムとして、eventfd を使用します。
Timerfd
Swoole は timerfd を使用してタイマーを実装します
SIgnalfd
signalfd は swoole で使用されます信号のシールドと処理を実現します。これにより、スレッド/プロセスがシグナルによって中断されたり、システム呼び出しが再起動されたりする問題を効果的に回避できます。リアクター スレッドはメイン プロセスでシグナルを受け取りません。
rree以上がswooleはオープンソースですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。