これは私がしたいことです。 Webサーバー(openSuSE 11.1を実行しています)にsquidプロキシを設定し、新しいエントリがaccess.logに追加されるたびに、アクセス情報をMySQLデータベースにダンプします。これを行うための最良の方法は何ですか?ファイルが変更されるたびにプログラムを実行する
現在、私は、2-3秒ごとにファイルの変更をチェックするデーモンを作成することを考えていますが、これは非常に効率的な方法ではないと思います。それ以外の方法で私はこれを達成できますか?
これは私がしたいことです。 Webサーバー(openSuSE 11.1を実行しています)にsquidプロキシを設定し、新しいエントリがaccess.logに追加されるたびに、アクセス情報をMySQLデータベースにダンプします。これを行うための最良の方法は何ですか?ファイルが変更されるたびにプログラムを実行する
現在、私は、2-3秒ごとにファイルの変更をチェックするデーモンを作成することを考えていますが、これは非常に効率的な方法ではないと思います。それ以外の方法で私はこれを達成できますか?
私の要件に非常に固有である私が見つけた最良の解決策は、イカのための「redirect_program」を使用している:http://wiki.squid-cache.org/Features/Redirectors
これが私の目的のために完璧に動作し、私のことを行うためのプログラムで私だけの十分な情報が得られます。
このような機能が利用できない場合の完璧な解決策は、paulsm4のおかげです。
私はあなたが直接データベースにイカのログを持ってお勧めします、または(継続的に実行されている)デーモンいる(概念上)を持っていますレコードを挿入してログファイルを "tail -f"します。
あなたは許容できるデータ損失の程度に応じて、あなたが到達したファイル内の「ポイント」を永続的に記憶することをたくさん必要とするかもしれません(たとえば、データベースの小さなテーブル同じトランザクションで)などがあります。これを正しく行うことは重要ではありませんが、実行できます。
通常は、squidがファイル内にレコードを作成する可能性があるため、mysqlがそれらを取るよりも速く、特にoffilneの場合には、これを非同期的に実行したいと考えています。
レコードを一括して挿入するのは、1つのレコードを挿入するのが比較的非効率的であるためです。
ない考え、これは動作しますが、おそらくあなたはCSV storage engineでテーブルを作成して、代わりにaccess.log
1の作成table.CSV
ファイルに直接書き込むイカプロキシを持つことができます。