問題タブ [dancer]
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.
html - Dancer Route から HTTP 接続を保持する方法
プロジェクトで Perl Dancer を使用しており、SSE を実装したいhttp://www.html5rocks.com/en/tutorials/eventsource/basics/#toc-introduction-differences
私は生き続けようとしているダンサールートを持っています
ダンサー ルートから何かを返すと、接続が閉じられるようです。$response理想的には、それを開いたままにして、後でより多くのデータをプッシュするために保存したいと思います。
更新: さらなる調査では、これはダンサーが使用する PSGI で可能であるように見えます: http://search.cpan.org/~miyagawa/PSGI-1.03/PSGI.pod#Delayed_Reponse_and_Streaming_Body 現時点ではミドルウェアのアプローチを検討しています。
perl - Perl Web アプリでは、「私たちの」変数が異なる Web 要求応答で共有されていますか?
Perl で Web アプリを作成していDancerます。ourで変数$varを宣言し、A.pmの内容を代入するとfile1します。
後で別のファイルで使用したいので、次のように宣言varしました。ourB.pm
したがって、get_file_content実行された後は$var、file1 の内容である必要があります。を実行する前display_file_contentに、file1 の内容を変更し、いくつかのボタンをクリックして実行しdisplay_file_contentました。想定通り、file1 の元の内容が表示されました。
次に、file1 の内容を変更した後、ボタンをクリックしなかったことを除いて、上記と同じことを行いましたdisplay_file_content。代わりに、別の Web ブラウザーで同じページに対する別の Web 要求を開始します。私は最初に実行get_file_contentし、ボタンをクリックしてdisplay_file_content直接進みます。file1 の変更されたコンテンツが 2 番目の Web ブラウザーに表示されました。これは正常です。しかし、最初の Web ブラウザーで表示ボタンをクリックすると、元のコンテンツではなく、変更されたコンテンツも表示されました。別の Web ブラウザで 2 回目の Web リクエストを行わなかった最初の実験と比較すると、変数$varは両方の Web リクエスト - レスポンス プロセスで共有されているようです。しかし、なぜそれが起こったのですか?いくつか説明をお願いできますか?
linux - GET 要求の読み取り時にダンサーがランダムにハングする
私は Linux で perl ダンサーと遊んでいますが、ブラウザが LAN 経由で直接サーバーに接続されていれば、すべて問題ありません。ただし、WAN 経由で接続し、ブラウザが IE9 の場合、ビジー カーソルが消えないことがあります。
ページ apx を 10 回連続してリロードすることで、これを引き起こすことができます。各リロードの間に数秒待っても、この問題が発生します。ページ自体は非常にシンプルで、w3c チェックに合格しています。
ルートとしてダンサーを実行しても、ポートが 80 か 3000 でも違いはありません。Apache でページを頻繁にリロードすることもテストしましたが、問題はないようです。
strace を実行しましたが、ダンサーが読み込もうとしたときに、要求データが利用できない場合があるという印象を受けました。トレースはこんな感じ
それが機能する場合:
ハングするとき
そして、それは永遠に座ります。私にできることはありますか?
multithreading - ダンサーと同時に複数のユーザーにサービスを提供するアプローチ
何らかの理由で、以下の質問に対する答えが見つかりませんでした。おそらく、あまりにも明白すぎるためです。
perl ダンサーを使った実験中に、10 秒間スリープしてから何かを返すルートを追加しました。これは、長時間実行される操作をシミュレートするために行いました。この 10 秒間、ダンサーは他のリクエストに応えないことに気付きました。これは、ダンサーがシングルスレッドであるためだと理解しています。
現在、このシングルスレッドのアプローチは、要求がやや厳しいアプリケーションにも適していないことは明らかです。ですから、確立された解決策はたくさんあるに違いないと思います。しかし、私はグーグルで検索する正しい検索文字列を知らないようです.
明確にするために:長時間実行される操作自体を開始したリクエストがブロックされてもかまいません。私が望むのは、他のすべてのリクエストが処理されていることです。
誰でも私に教えてもらえますか
- ウェブサーバーは、他のリクエストをブロックすることなく、従来、長時間実行される操作をどのように処理していましたか?
- 操作に時間がかかることがわかっている状況で、セッションごとにスレッド/プロセスが存在するか、またはスレッド/プロセスをオンデマンドで生成できるか
- マルチスレッドに移行するとき、つまりブラウザが常に同じプロセスと通信するとは限らない場合、セッション情報はどのように保存されますか?
- ダンサーに関する特定の推奨事項(ダンサーの代替案を自由に推奨してください)
perl - Perl Dancer で robots.txt を提供する方法
Perl Dancer Web フレームワークを使用して robots.txt を提供しようとしています。テキストを返すだけのルートがあればうまくいくと思いましたが、htmlandbodyタグでラップしているようです。これは、クローラーによって robots.txt ファイルとして正しく解釈されないと想定しています。
これを適切に行う方法はありますか?
ルートを書く方法は次のとおりです。
get '/robots.txt' => sub {
return "User-agent: *\nDisallow: /";
};
前もって感謝します!
dancer - Dancer アプリが HUP シグナルを処理してログファイルを閉じる/再度開くにはどうすればよいですか
ログ構成を使用して、Dancer アプリを作成しました。
そしてそれを始めます:
plackup -E 展開 -D -s Starman --workers=10 --port 8080 -a bin/app.pl
logrotate を使用してログ ファイルをローテーションする
しかし、新しいログファイルはゼロです。
logrotate confにpostrotateを追加して、HUPを送信し、HUPシグナルを処理しようとしましbin/app.plた
Dancer::Logger::File::init;
しかし、何も助けません。
ダンサーのログファイルをローテーションする方法を教えてもらえますか?