[英]How can I provide a temp file download using mod_perl and CGI::Application?
[英]How do I have a persistent DBIx::Class in CGI::Application with mod_perl?
我正在使用帶有DBIx :: Class的mod_perl上的CGI :: Application,我想在實例化時使用new定義一個新的dbic架構。 到目前為止,我還沒能讓它發揮作用。 我最接近的是一個超類,它有一個返回一個新對象的connect()方法,但我寧願它已經連接並實例化了。
我真的很感激任何想法。
謝謝!
注意 :好的,顯然沒有任何幫助,但是,與此同時我創建了一個懶惰實例化DBIx :: Class的訪問器,所以這可能會更好一些。 核實:
sub schema {
my $self = shift;
unless ($self->{schema}) {
$self->{schema} = ACD::Model->connect(@{$self->cfg->{$ENV{MODE}}->{connect_params}});
}
return $self->{schema};
}
然后當然要使用它你會做類似的事情:
$self->schema->resultset('Foo')->find(1234);
當然,您無法將數據庫連接序列化為會話文件或其他任何內容,並且您無法在apache forks之前創建它,但您可以為每個子進程保留一個實時進程。
提前創建它的選項是在你的基礎mod_perl處理程序子中執行它,但由於客戶端連接已經在那時開始,它不會為你帶來任何響應時間改進。
所以我會像上面一樣做一個懶惰的實現,但不是在$self
中緩存模式對象,而是將它緩存在一個包級別的私有變量中,這意味着每個apache子進程只有一個模式連接:
my $_schema;
sub schema {
return $_schema
if $_schema; # actually, you should check the db connection is live
return $_schema = ACD::Model->connect(...);
}
我沒有一個答案,但http://lists.scsys.co.uk/pipermail/dbix-class/2006-June/001690.html可能值得閱讀,因此您了解DBIC如何管理連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.