ReactPHPは非同期の非ブロッキングI / Oをどのように処理しますか?

レザシャドマン

ReactPHPは非同期の非ブロッキングI / Oをどのように処理しますか?

Nodejsは、さまざまなスレッドでI / Oを処理するイベントキューを使用します。これにはlibuvを使用します。PHPの場合と同様に、そのようなものはありません。ReactはシングルスレッドでノンブロッキングI / Oプロセスをどのように処理しますか?

方法

React PHPは、アプリケーションの主要なイベントループを提供します。コードはすべて1つのスレッド上にあるため、ブロックしない方法でコードを記述する必要があります。これに対する可能な解決策はすべて、ほとんどのphp開発者が慣れていると確信しているのとは異なる方法でphpを使用することを中心に展開しています... ReactPHPはメインループを提供しますが。React PHPライブラリの大部分は、ソケット/ストリーム/プロミスなどの実装です。これらはすべて、I / Oへのノンブロッキングアクセスを実現するための方法を採用しています。通常はstream_set_blockinghttp://php.net/manual/en/function.stream-set-blocking.php)を使用します

他のオプションには、FSM(https://en.wikipedia.org/wiki/Finite-state_machine)に似たもののプログラミングが含まれますこれにより、進行中に現在の状態を継続的に更新できます。毎回、コードの特定のチャンクを実行できるようにしてから、ループ内の他の何かにスレッドを放棄します。基本的に独自のタイムスライシングを実装します(https://en.wikipedia.org/wiki/Preemption_(computing)#Time_slice

もう1つのオプションは、通常はデフォルトで有効になっていないスレッド(http://php.net/manual/en/book.pthreads.phpを実装することです。そして、私が考えることができる最後のオプションは、プロセス制御を使用して、* nixシステムでのみ有効になっている他のプロセス(http://php.net/manual/en/intro.pcntl.php)をフォーク/スタート/制御することです。これにより、ホストCPUがタイムスライスを制御できるようになります。スレッドセーフ、メッセージングキューとの通信、またはその他のメカニズムのいずれかになるようにアプリケーションを設計する必要があります。

tldr; アプリケーションアーキテクチャを使用して、phpをブロックさせないようにしたり、ストリームをブロックしないように設定したり、スレッド/プロセス制御を使用して独自のマルチスレッドを管理したりします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Spring boot @Asyncメソッドは実際どのように非同期/非ブロッキングですか?

分類Dev

Linuxカーネルは非同期I / O(AIO)リクエストをどのように処理しますか?

分類Dev

非同期はJavascriptの変数をどのように処理しますか?

分類Dev

ブロッキングと非ブロッキングの非同期コード

分類Dev

Javaでの非ブロッキング(非同期)DNS解決

分類Dev

sqldeveloperの非同期/非ブロッキングクエリ

分類Dev

定数の初期化をどのように処理しますか?

分類Dev

node.jsはどのように非ブロッキングI / Oを実装しますか?

分類Dev

HashTablesは衝突をどのように処理しますか?

分類Dev

jProfilerはJITをどのように処理しますか?

分類Dev

parallelStreamは例外をどのように処理しますか?

分類Dev

JVMはRuntimeExceptionをどのように処理しますか

分類Dev

JavascriptはBODMASをどのように処理しますか?

分類Dev

AerospikeはCAP定理をどのように処理しますか?

分類Dev

fscanf()はdouble値をどのように処理しますか?

分類Dev

glRotateはglOrthoをどのように処理しますか?

分類Dev

FlaskはJSONをどのように処理しますか?

分類Dev

tastypieはcomlexurlをどのように処理しますか?

分類Dev

tastypieはcomlexurlをどのように処理しますか?

分類Dev

WatchKitは画像をどのように処理しますか?

分類Dev

glmnetはNA値をどのように処理しますか?

分類Dev

gltf latice参照をどのように処理しますか?

分類Dev

UndefinedUnitErrorをどのように処理しますか?

分類Dev

Scala Futuresはスレッドでどのように動作しますか?そして、それらをどのように使用して、非同期および非ブロッキングコードを実行できますか?

分類Dev

アウトバーンサブスクリプションからのメッセージを非同期で非ブロッキングで処理します

分類Dev

LinuxはTSS構造のI / O許可ビットマップをどのように処理しますか?

分類Dev

非同期I / Oメソッドはどのように処理されますか

分類Dev

Pythonで論理「and」演算子は整数をどのように処理しますか?

分類Dev

angleJSの$ http.postからの非同期リターンをどのように処理しますか?

Related 関連記事

  1. 1

    Spring boot @Asyncメソッドは実際どのように非同期/非ブロッキングですか?

  2. 2

    Linuxカーネルは非同期I / O(AIO)リクエストをどのように処理しますか?

  3. 3

    非同期はJavascriptの変数をどのように処理しますか?

  4. 4

    ブロッキングと非ブロッキングの非同期コード

  5. 5

    Javaでの非ブロッキング(非同期)DNS解決

  6. 6

    sqldeveloperの非同期/非ブロッキングクエリ

  7. 7

    定数の初期化をどのように処理しますか?

  8. 8

    node.jsはどのように非ブロッキングI / Oを実装しますか?

  9. 9

    HashTablesは衝突をどのように処理しますか?

  10. 10

    jProfilerはJITをどのように処理しますか?

  11. 11

    parallelStreamは例外をどのように処理しますか?

  12. 12

    JVMはRuntimeExceptionをどのように処理しますか

  13. 13

    JavascriptはBODMASをどのように処理しますか?

  14. 14

    AerospikeはCAP定理をどのように処理しますか?

  15. 15

    fscanf()はdouble値をどのように処理しますか?

  16. 16

    glRotateはglOrthoをどのように処理しますか?

  17. 17

    FlaskはJSONをどのように処理しますか?

  18. 18

    tastypieはcomlexurlをどのように処理しますか?

  19. 19

    tastypieはcomlexurlをどのように処理しますか?

  20. 20

    WatchKitは画像をどのように処理しますか?

  21. 21

    glmnetはNA値をどのように処理しますか?

  22. 22

    gltf latice参照をどのように処理しますか?

  23. 23

    UndefinedUnitErrorをどのように処理しますか?

  24. 24

    Scala Futuresはスレッドでどのように動作しますか?そして、それらをどのように使用して、非同期および非ブロッキングコードを実行できますか?

  25. 25

    アウトバーンサブスクリプションからのメッセージを非同期で非ブロッキングで処理します

  26. 26

    LinuxはTSS構造のI / O許可ビットマップをどのように処理しますか?

  27. 27

    非同期I / Oメソッドはどのように処理されますか

  28. 28

    Pythonで論理「and」演算子は整数をどのように処理しますか?

  29. 29

    angleJSの$ http.postからの非同期リターンをどのように処理しますか?

ホットタグ

アーカイブ