私は通常、-rパラメータを使って起動されるPerl Catalystアプリケーションを持っています。 私は行動の2種類に気づいた:Catalystアプリケーションの再起動のメカニズムにはどのような要素が影響しますか?
1)コードのすべての「ダミーの変更」で、通常はアプリケーションの再起動(「ダミーの変化」によって、私はこのようになめらか、スペースを追加または1つを欠失さ)
を2)アプリケーション(同じ「ダミーの変更」)を再起動しない、「サーバーを再起動しようとすると、」テキストが表示され、アプリが残って
(私は に手動にそれを殺す持っている)、この状態でブロックされています動作は実際のコードによって異なります。ある行動がどの瞬間に作用するかに影響するコードに関連するものがあるようです。動作は一定です。つまり、同じコードの動作が2つの一定の動作を1つ持っています。
アプリケーション自体は、エラーや警告なしで正常に動作しているようです。
どのようにコードがこの動作に影響を与える可能性がありますか? (私は一般的に意味する) どのような要因が再起動のメカニズムに関連していますか?
それができますDB接続に関連するもの。さらなる実験では、アプリケーションがアクセスされた場合(ブラウザなどから)は再起動しないことが明らかになりました。私は、アプリケーションを実行し続けるDBへの何らかの種類のオープンな接続があるかもしれないと思うし、彼らはそれをnoramllyで再起動させない。私はCatalyst :: Model :: DBIを使用しています。何か案は? – ArtM
MySQL、Informix、またはSQLiteで書かれたCatアプリケーションでは見られませんでしたが、それは可能です。リクエストサイクルの終わりにデータベースから切断すると(テンプレートがデータベースにアクセスする場合、RenderViewをエンドハンドラから分離する必要があります)、動作が変わりますか? – RET
* end *ハンドラに明示的な* disconnect *を追加しました(RenderViewは別のサブに移動され、* forward *が使用されます)。今度はDBハンドラがリクエストごとに切断されます(これを見るにはDBIモデルでデバッグメッセージを追加してください)。動作は変更されません。これが役に立ったら、私はOracleを使っています。 – ArtM