1

私は1つのプロジェクトに取り組んでおり、RequestsResponsesUsersの3つのテーブルを持つmysqlデータベースを使用しています。

最初の(インデックス)ページは、リンクが利用できる純粋なHTMLです。これらのリンクはPerlスクリプトを実行してデータベースからデータをフェッチし、そのデータをテンプレートファイルに渡すため、次のページが生成されます。

私の質問は、MySQLデータベースからデータをフェッチする必要があるたびに、データベースとの接続を開き、クエリ結果を取得した後、再度閉じる必要があるかどうかです。データベースに再接続する必要がないように、クエリ間で接続を維持するにはどうすればよいですか?

個別の関数で単一のPerlファイルにすべてのクエリを含めることはできますか?もしそうなら、Perl関数のリンクを提供する方法は?

4

1 に答える 1

2

まあ、これは実際には1つではなく4つの質問のように見えます。@DavidOが指摘したように、CGIでは、ページ要求間で永続的なデータベース接続を維持することはできません。しかし、あなたが尋ねた主な質問に答えさせてください。

「私の質問は、MySQLデータベースからデータをフェッチする必要があるたびに、データベースとの接続を開き、クエリ結果を取得した後、再度閉じる必要があるかどうかです。」

CGIスクリプトが特定のリクエストでデータベースに対して複数のクエリを実行する必要がある場合は、クエリごとに接続を閉じて再度開く必要はありません。DBIのドキュメントを見ると、リクエストごとに1つのデータベースハンドルを作成できることがわかります。これを使用して、接続が開いている限り、データベースに対して任意の量のクエリを実行できます。

今後は、DBIx :: Classをご覧になることをお勧めします。これにより、これらの詳細の多くを抽象化できます。Perlとデータベースを使い始めたばかりの場合は、頭を悩ませることはたくさんありますが、慣れれば、それは本当の命の恩人です。

于 2012-05-30T04:50:39.840 に答える