@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?
  • Вопрос задан
  • 425 просмотров
Решения вопроса 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 - Выдает только имена файлов, содержащих сопоставившиеся строки, по одному в строке. Если образец найден в нескольких строках файла, имя файла не повторяется.

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
01 мая 2024, в 17:23
100000 руб./за проект
01 мая 2024, в 16:45
120000 руб./за проект