2017-05-04 5 views
-2

プロキシ/クローラを作成したのはもうしばらく前です。私はこれが簡単でOKの解決策であると思っていましたが、一度それが1 000 000のファイルに近づくにつれて、より多くの問題に遭遇したことに気付きました。データベースの検索には最大15秒かかることがあり、先週の2回のサーバークラッシュの経験があります。私はapache2を再起動し、端末で "test"とspam "free -m"コマンドを検索しました。私はラムがすぐに高くなったことに気付きました。そしておそらくクラッシュを引き起こすラムでしょう。私は何が検索エンジンを速くするか分からないが、本当に知りたい。フォルダとサブフォルダのパスを高速なデータベースエンジンにインポートする

すべてのファイルが下に格納されています

database/*/*/*.txt 

そしてそれらすべてを通過するために、このコードを使用します。

$files = array(); 
$dir = '/var/www/html/database'; 
foreach (glob($dir . '/*/*/*.txt', GLOB_NOCHECK) as $path) { 
    $title = basename($path, ".txt"); 
    if(strripos($title,$search) !== false){ 
     array_push($files, $path); 
    } 
} 

コードがはるかに長いですが、私はどれだけの基本を見せたかったですできます。

各ファイルには約6行の有用な情報が含まれています。

私は解決策を探し始めました。 JavaやCのようにPHPよりも高速に検索できるものを検索するとどうなりますか?ああ、それは混乱するだろう。だから私はMySQLについて考えた。しかし、フォルダとサブフォルダからすべてのファイルをMySQLにどのように転送すればよいですか?サーバーはDebianを実行しており、4GBのRAMとi3プロセッサを搭載しています。

MySQLが混乱していて、他の解決策が見つかりませんでしたので、まだ何もしていません。私は何をすべきか?

答えて

0

この質問はあまりにも多くを求めています。クリックだけではありません。このような問題を抱えている人が増えたと思っていましたが、誰もが事前検索エンジンを使用していることに気付きました。

私はWindowsのコンピュータにデータベース全体をダウンロードし、自動的にすべてのファイルを処理してコンテンツを取得し、DebianサーバにインストールしたelasticsearchデータベースにPOSTするプログラムを作成しました。私はおそらく純粋なPOST要求にファイルの代わりにファイルコンバータをファイルを作成する必要があります。

これを行うことの欠点は、速度があまり高くなく、700,000ファイルをデータベースに転送するのに2時間かかったことです。

ファイルで使用した特定の文字列のため、プログラムは公開されません。だから、これは私の予想以上に難しかった。

C#アプライ結果: Screenshot

関連する問題