PHP — как осуществить поиск файла по маске и считывание нужных данных?

Здравствуйте, уважаемые знатоки PHP! Есть небольшой вопрос по оптимизации небольшого скрипта, который ищет нужные log файлы в определенной папке, открывает их, вытаскивает нужные значения.

Вот рабочая часть кода:
// Другой код...
foreach (glob("$logdir*_log_$date.txt") as $logfile) { 
$content = file_get_contents($logfile); 
$logbase = explode(';',$content);
$lastline = array_pop($logbase); 
list($domain, $is, $down ,$time_s) = explode(" ", $logbase[0]); 
list($domain, $is, $down ,$time_f) = explode(" ", array_pop($logbase)); 
$massage = "$domain упал в $time_s и ожил в $time_f <br>"; 
echo "$massage"; 
// Другой код....
} // Завершаем цикл
// Другой код....


В папке лежат много файлов с разными названиями, типа: domain.ru_log_дата.txt
В каждом файле подобная хрень:

domain.ru is down 12:14;
domain.ru is down 12:23
domain.ru is down 12:25
domain.ru is down 12:28

Я сформировал цикл поиска файлов в папке по маске, обратите внимание на "*" звездочку в поиске.

Находим log файл, раскидываем его в массив строк, выкидываем последнюю строку(она пустая).
Вытаскиваем первую строку, опять раскидываем ее в массив, вытаскиваем из массива время.
Вытаскиваем предпоследнюю строку, опять раскидываем ее в массив, вытаскиваем из массива время. Далее просто формируем результат и, если хотим, выводим результат.

Вроде бы все работает как автомат, но есть такой вопрос - можно ли как-то оптимизировать работу?

P.S Вроде бы даже выкинул такие моменты как открытие папки, сканирование и тд. Но все же...
  • Вопрос задан
  • 5680 просмотров
Пригласить эксперта
Ответы на вопрос 1
alekciy
@alekciy
Вёбных дел мастер
Оптимизировать только только исходя из количества потребляемой памяти. Потому как file_get_contents читает в память весь файл. А если лог будет гиг?

А разделитель строк всегда ;? А если забыли в конец строки его дописать (в указанном примере забыли для всех строк кроме первой) Да и не нужен он, если есть перенос строки (если эти строки пишет php, то можно использовать PHP_EOL, в противном случае лучше все же детектировать).
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы