問題タブ [reactphp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
434 参照

reactphp - ReactPHP はすべてのループを 2 回実行します

私は今テクノロジーを学ぼうとしています - reactPHP。しかし、私は開始スクリプトでスタックしています。少し編集しましたが、問題があります。反応ループを呼び出すと、スクリプトが 2 回実行されます。

私はこのコードを持っています:

http://localhost:1337/react/index.phpを呼び出すと、data.txt でこれを取得します

私は1つの値だけを期待しています。

0 投票する
2 に答える
2751 参照

php - 同期的に実行されるreactPHP promise

私は、reactPHP で js のような約束を実装しようとしています。しかし、何らかの理由でメソッドが同期的に実行されend_at、promise が解決された後にのみ出力されます。

コード:

0 投票する
1 に答える
153 参照

php - ReactPHP libevent と socket_pair がエラーをスローする

私は問題があり、stream_socket_pair で ReactPHP イベントループを使用しています。

StreamSelect ループでは完全に機能しますが、LibEvent 拡張機能で使用しようとすると、無制限のエラー ストリームが発生しました。

このエラーを再現するための最小限のコード

0 投票する
1 に答える
238 参照

php - 非アクティブ期間後に PHP CLI スクリプトで関数を実行する

Symfony2 とRabbitMqBundleを使用して、ElasticSearchにドキュメントを送信するワーカーを作成しました。ドキュメントを 1 つずつインデックス化するのは、ElasticSearch バルク API を使用するよりもはるかに遅くなります。したがって、文書を数千のグループで ES にフラッシュするバッファーを作成しました。コードは次のようになります (少し単純化されています)。

これはすべて非常にうまく機能しますが、わずかな問題があります。キューは予測できない速度でメッセージでいっぱいになります。5 分間で 100000 の場合もあれば、数時間で 1 でない場合もあります。たとえば、82671 個のドキュメントがキューに入れられている場合、最後の 671 個のドキュメントは、数時間かかる可能性がある別の 329 個のドキュメントを受信する前にインデックス化されません。私は次のことができるようにしたいと思います:

警告: SF コード! これは明らかにうまくいきません:

これで、イベント駆動型ではない PHP の制限について理解できました。しかし、これは 2015 年で、ReactPHP のようなソリューションがあるので、これは可能なはずですよね? ØMQ には、この関数があります。RabbitMQ で機能する、またはメッセージ キュー拡張機能とは無関係に機能するソリューションは何でしょうか?

私が懐疑的な解決策:

  1. crysalead/codeがあります。を使用してタイマーをシミュレートしdeclare(ticks = 1);ます。これがパフォーマンスと堅実なアプローチであるかどうかはわかりません。何か案は?
  2. 「FLUSH」メッセージを 5 分ごとに同じキューに発行する cronjob を実行し、このメッセージを受信したときに明示的にバッファをフラッシュすることはできますが、それはごまかしになります。
0 投票する
0 に答える
80 参照

php - ReactPHP と EOT

reactPHP ソケットに接続されているターミナルを閉じると、データが記号 (hex )dataで構成される多くのイベントが発生します。EOT04

それらを無視する適切な方法は何ですか? close接続自体のイベントによって閉じられたトランザクションに反応できるため、それらは役に立ちません。

0 投票する
0 に答える
214 参照

promise - がぶがぶ反応 Promise 原因無限ループ

Guzzle 6を使用 して非同期リクエストを呼び出し、次にReact Promise/Deferredおよび Event loop を使用し、php-react-blockを使用して解決済みの結果を取得します。

まず、次のように http Request を送信します。

このメソッドを次のように呼び出した後

しかし、 Clue\React\Block\await($requestPromise, $loop) を呼び出すと、システムが無限にループし、約束を解決できません。また、関連イベント(LibEvent)のrunメソッドにqueue->run()メソッドを追加しました。しかし、システムはまだ無限にループしています。

システムが無限にループするのはなぜですか?

助けてくれてありがとう

0 投票する
0 に答える
302 参照

php - CakePHP データベース セッション ハンドラーとリアクティブ プログラミング

次のコードを見てください。

step1 アクションを実行し、5 秒間スリープして、step2 を実行すると、結果は「失敗」になります。つまり、書き込みメソッドを呼び出した瞬間にセッション変数を保持していません。

CakePHP の DatabaseSession クラスを見ると、次のように表示されます。

これは問題の一例にすぎません。ブラウザで CakePHP と EventSource を使用して ReactPHP を使用しています。リクエストを送信すると、スクリプトが終了する前に、PHP はブラウザに情報を送信するためにソケットを数回解放します。ユーザーが 2 番目のステップをクリックし、最初のステップがまだ完了していない場合、step2 はセッション変数を読み取ることができないため、エラーをスローします。

session_write_close が実行されている場合、PHP はセッションのみを保持すると思います。

どうすればこれを解決できますか?

スクリプトが終了する前にセッションを保存することはできますか?