У меня есть php-страница, на рендеринг которой уходит 2,8 секунды. Страница содержит скрипт, который читает текстовый файл через file()
строка за строкой (~ 5000 строк) через цикл foreach
. Это прекрасно работает и позволяет мне обернуть каждую строку в <div>
. Это все выглядит примерно так.
$text_file = 'path/to/my/text/file.txt';
$lines = file($text_file);
$output = '';
foreach($lines as $line_num => $line){
$output .= '<div id="'.$line_num.'" class="line">'.htmlspecialchars($line).'</div>'."\n";
}
echo $output;
Проблема в том, что мне нужно запросить , есть ли номер строки в базе данных и назначить ли ей дополнительный класс highlight
. Это то, что заставляет страницу отображаться так медленно. Каждая строка (~ 5000) запрашивает базу данных в цикле. Это выглядит примерно так.
foreach($lines as $line_num => $line){
// codeigniter is being used here
$line_exists = $this->line_model->lookup_line($line_num);
// $line_exists checks the database if the $line_num exists it will return true / false
if($line_exists){
$lines_output .= '<div id="'.$line_num.'" class="line highlight">'.htmlspecialchars($line).'</div>'."\n";
}else{
$lines_output .= '<div id="'.$line_num.'" class="line">'.htmlspecialchars($line).'</div>'."\n";
}
}
Мой вопрос : есть ли более эффективный / быстрый способ сделать это?