ユーザーが入力した正規表現を受け入れ、それを使用して大きなテキスト ファイル (940 万行、約 160 MB) を検索する PHP Web スクリプトがあります。スクリプトの最初の繰り返しでは、ファイルを通常のファイル システムに置き、検索が必要な場合は fopen / fgets を使用してアクセスし、1 行ずつ検索しました。正規表現の複雑さにもよりますが、スクリプトはファイル全体を 30 ~ 45 秒で処理しました。
速度を上げるために、1 GB の tmpfs パーティションをマウントし、大きなテキスト ファイルをそこに移動しました。次に、PHP スクリプトのパスを変更し、すぐに改善されることを望んでいました。ただし、スクリプトがファイルを解析する速度は変わっておらず、複数回実行すると、通常のファイル システムからファイルを読み取る場合よりも遅くなることがありました。
さらに、PHP でファイル全体を RAM にロードしようとしましたが、最初に配列にプルしたところ、検索時間が 40% ほど改善されました。残念ながら、ファイルをアレイに最初にロードする時間が非常に長いため、これは私にとって受け入れられる方法ではありません。
これはすべて、12 GB の RAM を搭載し、Debian 7 を実行し、nginx / php5-fpm を使用する仮想サーバーで発生しています。
tmpfs で何が起こっていますか? 足りないものはありますか?必要な追加情報を提供します。