0

「preg_match_all」は大きなファイルを解析するために作成されたものではないことを読みましたが、それを行う必要があります。私は増加しました:

pcre.backtrack_limit=1000000000
pcre.recursion_limit=1000000000

PHPのmemory_limitが5000Mに設定されていても、スクリプトは0.2秒以内にエラーや例外なしで終了します...

唯一の解決策は、100Mファイルを100個の小さな1Mファイルに分割することですか?

手伝ってくれてありがとう

4

2 に答える 2

4

大量のデータを処理するのにはるかに適したコマンドラインツールの使用を検討してください。

grep、sed、awk、またはそれらの組み合わせ。

于 2012-07-03T17:48:06.287 に答える
3

コードに基づいて、次のようにすることをお勧めします。

  1. 変数$dataを空の文字列に設定します

  2. 変数$workを空の文字列に設定します。データのブロックを読み取り、この文字列をに追加します$data

  3. 正規表現を使用#^(.*?)(<tr>\n(?!.*<tr>\n).*)$#して分割$data$work$data

  4. ですべての一致を検索$work

  5. データが利用可能になっている間にポイント#2に戻ります

  6. ですべての一致を検索$data

于 2012-07-03T17:45:18.223 に答える