問題タブ [gen-server]

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 に答える
75 参照

erlang - error_logger が出力するサーバーの状態は、"Last message in was" を処理するときの状態ですか?

私の下手な英語を許して、

つまり、gen_server がクラッシュしたとき、error_logger が出力さ"Last message in was""When Server State"、サーバーの状態の値は、最後のメッセージを処理する前の状態ですか?

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

erlang - abcast 関数と gen_server 名の一意性に関する混乱

erlang.org/docの gen_server セクションから:

start_link(サーバー名、モジュール、引数、オプション) -> 結果

指定されたプロセスが既に存在する場合ServerName、関数は {error,{already_started,Pid}} を返します。

どうやら、Erlang は複数のプロセスが同じ名前を持つことを許可していないようです。

よし、今度は別の関数を見てみましょう:

abcast(名前、リクエスト) -> abcast

指定されたノードとしてローカルに登録されているgen_serversに非同期リクエストを送信しNameます。

複数形の使用に注意してください。

Erlang は gen_server プロセスに一意の名前を必要とするため、関数が同じ名前を持つ複数のabcastプロセスに送信する非同期メッセージを実装するのはなぜですか?

私は何が欠けていますか?

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

erlang - gen_server ソケット上の Gen_tcp リッスンはすぐに閉じられます

gen_server で gen_tcp を使用したいのですが、コードは次のとおりです。

さて、tcp_listenerは の直前waitConnetionで閉まっていますが、その理由がよくわかりません。

handle_castコードを init セクションに移動すると、正しく動作します。

接続が閉じられているのはなぜですか? 私は成功せずに多くの時間を費やしています。

どんな助けでも大歓迎です。

編集

リスナーの後にキャスト コードを移動すると、次のようになります。

私が投稿したコード:

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

erlang - Erlang でスーパーバイザーによってすべての gen_server を強制終了します

Erlang には、gen_server プロセス (my_gen) を開始および監視するスーパーバイザー (my_sup) モジュールがあります。my_gen を変更、コンパイル、ロードしたら、アプリケーションを再起動する必要があります。

スーパーバイザー (my_sup) によってすべてのプロセス (gen_server) を強制終了し、プロセス (gen_server) を再起動するより良い方法はありますか?

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

emacs - Erlang スーパーバイザー/gen_server 例外終了: noproc

私は今、これに対する問題が何であるかを理解しようとして気が狂っています。

基本的に、1 つのサーバーと 1 つの gen_event-behaviour モジュールで簡単なスーパーバイザーをセットアップしたいだけです。

今の問題は、それをもう開始できないことです。それはスーパーバイザーです。

何をしてもこのエラーが発生します: ** exception exit: noproc

text-tracer を使用すると、sRPG_supervisor:init/1 で発生することが示されます。そして、これでコードに何か問題があると思いますが、他の人の例を実行するとまったく同じ結果になります(Joe Armstrongsの例をダウンロードし、同じ結果でsellaprime_supervisorをテストしました)。

仮想Ubuntuインストールで実行すると、正常に起動していました。次に、Windowsでコーディングできるようにセットアップしましたが、これの最も単純な形式が機能することをテストしたことはなく、明らかに何らかの理由で機能しません。

したがって、誰かが同様の問題を抱えている場合は、解決策を見つけることができます! OTP 17 の Erlang バージョンとして erl6.3 を使用しています。

私が使用しているコードは次のとおりです。Emacs で生成されたスケルトンからビルドアップしたものです: sRPG_supervisor.erl

sRPG_server.erl

sRPG_event_handler.erl

何が起こるかの例を次に示します。

ご覧のとおり、サーバーはスーパーバイザーなしで呼び出されたときに機能します。

他の人が抱えていた同様の問題をよく調べましたが、役に立ちませんでした。

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

erlang - この場合、どのErlangの動作、つまりgen_serverまたはgen_fsmを使用する必要がありますか

特定のトランザクションについて SOAP Web サービスにクエリを実行するソリューションを開発しています。これらのトランザクションは、取得されるとデータベースに保存され、その後コールバック URL が呼び出されてデータが別のサーバーに送信されます。この問題の解決策をどのように設計するのが最善でしょうか? 私の混乱のポイントは、gen_server または gen_fsm のどちらを使用する必要があるかということです。使用する場合、ソリューションのどのコンポーネントがどこに行くのか、つまり gen_server の場合、どのタスクがサーバーに送られ、どのタスクがクライアントに送られるのかということです。

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

erlang - gen_server のクラッシュ ダンプを無効にする方法

  • いくつかの賢明な情報をその状態で保持する gen_server があります (パスワードなど)

  • ラガーが有効になっている、

    したがって、クラッシュした場合、gen_server の状態は次のようにクラッシュ ログにダンプされます。

その結果、適切な情報がログ ファイルに書き込まれます。

gen_server の状態がログ ファイル/クラッシュ ダンプに書き込まれないようにする方法はありますか?

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

macos - 16358 gen_tcp:connect 呼び出し後の Erlang gen_server eaddrnotavail

Erlang でサーバーを作成していて、多数の接続を開きたいと考えています。問題は、 16358 回の呼び出しの後に{error, eaddrnotavail}gen_tcp:connect/3を受け取ることです。以下に示すように、サーバーは非常に単純です。

MacOS Yosemite の制限を変更しました。ulimit -n出力は 6553600 です。

私はから始めます:

サーバー:

クライアント: