84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
コルーチンを使用して協調マルチタスクを実装する PHP に関する記事を目にしましたが、PHP の収量によるコルーチンの実装について説明されていました。しかし、記事が長すぎて読みきれなかったので、ざっと読んでみました。
PHP のコルーチンはいつプロジェクトで使用されますか?
または、該当するシナリオはありますか?
現在、それをカプセル化するライブラリはありますか?
コルーチンを非同期ネットワーク IO で使用して、ノンブロッキングにすることができます。
たとえば、http リクエストを実行していて、外部インターフェイスをリクエストする必要がある場合、次のシナリオが発生します。
フロントエンドサーバーは nginx です。nginx はノンブロッキングで非同期ですが、php-fpm は同期でブロッキングです。その後、外部インターフェイスをリクエストすると、タスクはブロックされます。 (ここに追加すると、php-fpmのワーカープロセスは同期的にブロックされます)
コルーチンを使用すると、インターフェイスをリクエストしているときに、タスクを一時停止してコンテキストを保存できます。その後、インターフェイスが戻ったら、タスクを再度開始して実行を続行します。プロセスはこのタスクに時間を費やす必要がなく、他の http リクエストを処理できます。これは同時実行の量が多いことを意味しますか?
同様に、リクエストがデータベースにクエリを実行している場合、それも IO リクエストであり、同期的です。コルーチンを使用すると、IO プログラミングを非同期かつノンブロッキングにすることができるため、同時実行性が向上します。これにより、主に、CPU が IO を待機している間に他の処理を実行できるようになります。すべての IO リクエストはコルーチンを通じてこれを行うことができます。
あなたのこの記事を読みました、とても良い記事です。ここで著者は、yield を使用してタスク スケジュールを実装し、上で説明したことを実行します。ニアオ兄弟による翻訳 http://www.laruence.com/2015/... もご覧ください。これは、ご覧になった翻訳の補足と言えます。彼は、yield を通じて非同期ノンブロッキング サーバーを実装しました。これはもちろん単なるデモです。例を見たほうが分かりやすいでしょう。
これまでに私が遭遇したことは、laravelフレームワークモデルがデータをフェッチするためにカーソルを使用するとき、一度に多量のデータをフェッチすることによって引き起こされるメモリ不足の問題を防ぐためにyieldが使用されるということです
最も基本的なことは、大量のデータを Excel にインポートまたはエクスポートすることで、データを処理する必要があることを前提としています。
コルーチンを非同期ネットワーク IO で使用して、ノンブロッキングにすることができます。
たとえば、http リクエストを実行していて、外部インターフェイスをリクエストする必要がある場合、次のシナリオが発生します。
フロントエンドサーバーは nginx です。nginx はノンブロッキングで非同期ですが、php-fpm は同期でブロッキングです。その後、外部インターフェイスをリクエストすると、タスクはブロックされます。 (ここに追加すると、php-fpmのワーカープロセスは同期的にブロックされます)
コルーチンを使用すると、インターフェイスをリクエストしているときに、タスクを一時停止してコンテキストを保存できます。その後、インターフェイスが戻ったら、タスクを再度開始して実行を続行します。プロセスはこのタスクに時間を費やす必要がなく、他の http リクエストを処理できます。これは同時実行の量が多いことを意味しますか?
同様に、リクエストがデータベースにクエリを実行している場合、それも IO リクエストであり、同期的です。コルーチンを使用すると、IO プログラミングを非同期かつノンブロッキングにすることができるため、同時実行性が向上します。これにより、主に、CPU が IO を待機している間に他の処理を実行できるようになります。すべての IO リクエストはコルーチンを通じてこれを行うことができます。
あなたのこの記事を読みました、とても良い記事です。ここで著者は、yield を使用してタスク スケジュールを実装し、上で説明したことを実行します。ニアオ兄弟による翻訳 http://www.laruence.com/2015/... もご覧ください。これは、ご覧になった翻訳の補足と言えます。彼は、yield を通じて非同期ノンブロッキング サーバーを実装しました。これはもちろん単なるデモです。例を見たほうが分かりやすいでしょう。
これまでに私が遭遇したことは、laravelフレームワークモデルがデータをフェッチするためにカーソルを使用するとき、一度に多量のデータをフェッチすることによって引き起こされるメモリ不足の問題を防ぐためにyieldが使用されるということです
最も基本的なことは、大量のデータを Excel にインポートまたはエクスポートすることで、データを処理する必要があることを前提としています。