@burov0798
Пытаюсь изучать php\js

Как быстро обработать 10гб txt файлов методами php?

Добрый день.
Возникла такая необходимость,как обработать 10гб текстовых файлов, все эти файлы лежат по разным папкам. В данный момент написал я скрипт php, который пробегает по всем папкам и находит там только .txt файлы,далее он открывает каждый файл и построчно его читает и ищет в строках ключевые слова (кусок кода указал)
foreach ( $array_url as $addr ) {
		$handle = @fopen($addr, "r");
		if ($handle)
		{
			while (!feof($handle))
			{
				$buffer = fgets($handle);
				foreach ( $searchthis as $search ) {
					if(strpos($buffer, $search) !== FALSE)
						$matches[] = $buffer;
//Тут мне нужно хотя бы 1 вхождение, но скрипт ищет все вхождения.
//Как при нахождении хотя бы 1 вхождения сразу перейти в другой файл?
				}
			}
			fclose($handle);
		}
		unset($buffer);
		unset($handle);	
	}

Далее я смотрю, если есть хотя бы что-то в $matches то переношу этот файл в другую папку, и так далее по всех txt.
Это все хорошо работает на ~100 файлах (объем файлов до 1мб), но при 10гб файл думаю так не будет...
Как лучше обработать такой объем? Может лучше будет обработать только средствами linux?
  • Вопрос задан
  • 351 просмотр
Решения вопроса 1
Stalker_RED
@Stalker_RED
https://ru.wikipedia.org/wiki/Grep

grep -r --include=\*.txt 'hello world' /path/to/dir

-r - искать рекурсивно во вложенных папках
--include=\*.txt - только файлы .txt
'hello world' - искомая фраза (можно не фразу, а регулярку)
/path/to/dir - откуда начинать поиск

-l - Выдает только имена файлов, содержащих сопоставившиеся строки, по одному в строке. Если образец найден в нескольких строках файла, имя файла не повторяется.

Я наверное не буду сюда всю справку перепечатывать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы