swoole コルーチンの予備調査
現在 swoole のコルーチンを学習しています。コルーチンの特徴は、同時に実行されるように見えることです。試してみてください。
無料推奨: swoole
この記事の前提は、swoole には次のようなものがあります。 Linux にインストールされています。最新バージョンは 4.5.9 (2020-12-17)
要件を構築し、一度に 5 つのコルーチンを作成します。各コルーチンは 1 ~ 3 秒の間の乱数でスリープし、スリープ時間について出力します。すべてのプログラムが終了するときに、プロセス全体が最大 3 秒かかることを願っています。
1.php
foreach (range(1, 5) as $v) { go(function () { $sleep_time = random_int(1, 3); sleep($sleep_time); echo "睡眠了" . $sleep_time . "秒\n"; });}
php 1.phpを使用して実行するとプログラムは実行できますが、コルーチンという感じではなく同期的に実行されます。実行全体には 3 秒をはるかに超えます。ここには小さなバグがあることが判明しました。プログラム全体に影響を与えることなくこのコルーチン内でスリープできるように、co:sleep を使用する必要があります。
2.php
foreach (range(1, 5) as $v) { go(function () { $sleep_time = random_int(1, 3); co::sleep($sleep_time); echo "睡眠了" . $sleep_time . "秒\n"; });}
結果は次のとおりです:
睡眠了1秒 睡眠了2秒 睡眠了2秒 睡眠了3秒 睡眠了3秒
つまり、スリープ時間が短いコルーチンが最初に終了し、同じ時間スリープしているコルーチンが終了する必要があります。文字も同時に出力します。プログラムの終了時にかかった合計時間は 3 秒であり、同時実行が成功したことを示しています。
5 つのコルーチンが終了したら、hello world が出力されることを願っています。
3.php
foreach (range(1, 5) as $v) { go(function () { $sleep_time = random_int(1, 3); co::sleep($sleep_time); $a = random_int(1, 1000); echo "睡眠了" . $sleep_time . "秒\n"; });}echo "hello world!\n";
結果は別の問題であり、hello world が常に最初に出力されます。
したがって、ここではコルーチン コンテナを使用する必要があります。
4.php
Co\run(function () { foreach (range(1, 5) as $v) { go(function () { $sleep_time = random_int(1, 3); co::sleep($sleep_time); echo "睡眠了" . $sleep_time . "秒\n"; }); }});echo "hello world!\n";
結果は次のとおりです:
睡眠了1秒 睡眠了2秒 睡眠了3秒 睡眠了3秒 睡眠了3秒 hello world!
今回は正しい結果が出力でき、完璧です。
swoole のコルーチンはまだ少し興味深いです ~
以上がswoole コルーチンの予備調査の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、Swooleのメモリプールを使用して、効率的なメモリ管理と構成によりメモリの断片化を減らすことについて説明します。主な焦点は、プール内のメモリの有効化、サイジング、再利用です。

記事では、スウールをカスタムモジュールで拡張し、手順を詳細に、ベストプラクティスを詳細にし、トラブルシューティングで説明します。主な焦点は、機能と統合を強化することです。

記事では、Swooleのプロセス分離の構成、安定性とセキュリティの改善などの利点、トラブルシューティング方法について説明します。

この記事では、高性能アプリケーション用のPHPでSwooleの非同期I/O機能を使用することについて説明します。インストール、サーバーのセットアップ、および最適化戦略をカバーします。ワードカウント:159

この記事では、バグの報告、機能の送信、コーディング、ドキュメントの改善など、スウールプロジェクトに貢献する方法の概要を説明しています。それは、初心者が貢献を開始するために必要なスキルとステップについて議論し、プレスを見つける方法は

Swooleの原子炉モデルは、イベント駆動型の非ブロッキングI/Oアーキテクチャを使用して、高電流シナリオを効率的に管理し、さまざまなテクニックを通じてパフォーマンスを最適化します。(159文字)

SwooleのWebSocketクライアントは、高性能、ASYNC I/O、およびSSL/TLSなどのセキュリティ機能とのリアルタイム通信を強化します。スケーラビリティと効率的なデータストリーミングをサポートします。

記事では、マイクロサービスにSwooleを使用し、非同期I/OおよびCoroutinesを介した設計、実装、パフォーマンスの向上に焦点を当てています。ワードカウント:159
