Оптимизация сайта - использование PHP и памяти + база данных?

102
10

Я создаю новостной сайт, написанный на php. Страницы на веб-сайте содержат контент, который необходимо обновлять автоматически, в зависимости от некоторой информации на веб-сайте. Моя идея состояла в том, чтобы создать один.txt файл, который будет содержать всю эту информацию, поэтому я могу получить к нему доступ через php и изменить страницы на сайте. Когда пользователь загружает сайт, PHP-скрипт запускает и считывает весь файл в строку, разбивает его два раза и затем работает с этими строками. Но, возможно, проблема заключается в том, что этот.txt файл может быть действительно большим (например, 10 МБ) и с большим количеством трафика, вероятно, плохая идея читать этот файл каждый раз, когда пользователь загружает страницу, поэтому мне, вероятно, нужно что-то быстрее и лучше, Возможное решение - это база данных mysql, но будет ли она иметь большое значение? Кроме того, есть ли какие-то трюки для оптимизации производительности сайта с помощью PHP?

ПРИМЕЧАНИЕ. Вот скрипт, который читает файл:

 <?php
$myfile = fopen("postovi.txt", "r") or die("Unable to open file!");
$smejanje = fread($myfile,filesize("postovi.txt"));
$postovi= explode("<novipost>", $smejanje);

$i = 0;
$duzina = sizeof($postovi);
while ($i < $duzina) //duzina = broj postova <ucitava sve postove>
{
$postovi[$i] = explode("|", $postovi[$i]);
$i++;
}

fclose($myfile);

и вот элемент html, который должен быть обновлен информацией из этого файла:

<?php $id++; ?>
<div class="mali-post-h">
<a href="<?php echo($postovi[$id][0]); ?>" id="<?php echo("mali-post-link-".$id); ?>">
<div class="mali-post" style="background-image: url(<?php echo $postovi[$id][3]; ?>);" id="<?php echo("mali-post-".$id); ?>">
<div class="mali-post-naslov">
<p id="<?php echo("mali-post-naslov-".$id); ?>" class="customfont"><?php echo $postovi[$id][2]; ?></p>
<p style="font-size:10px"> <span style="font-weight: 900; font-size:15px; color: #3366FF;"> <?php echo $znak ?> </span> <?php
$time = strtotime($postovi[$id][4]);
echo ' pre '.humanTiming($time); ?> </p>
</div>
</div>
</a>
</div>

спросил(а) 2021-01-19T17:13:07+03:00 9 месяцев, 1 неделя назад
1
Решение
138

Я считаю, что случай использования баз данных для хранения и извлечения данных уже сделан. Текстовый файл только дойдет до вас - возможно, это полезно только для очень маленьких задач. Я бы рекомендовал прочитать книгу или найти хороший учебник онлайн, чтобы узнать, как правильно использовать MySQL в ваших PHP-приложениях. MySQL является бесплатным, хотя в зависимости от ваших потребностей вам может понадобиться разместить его в Интернете.

Когда вы изучите основы, есть всевозможные стратегии, которые вы можете использовать для ускорения ваших запросов. Например, вы можете вывести гораздо больше, чем вам нужно, с помощью одного запроса, а затем использовать PHP для сортировки результатов. Вызовы на сервер базы данных имеют тенденцию занимать больше времени, чем циклы CPU.

ответил(а) 2021-01-19T17:13:07+03:00 9 месяцев, 1 неделя назад
46

Если у вас есть 10 МБ данных, которые должны быть доступны для каждой страницы, я предлагаю иметь эти данные в ОЗУ, а не загружать их из любого источника данных на основе дисков. Хотя MySQL, вероятно, будет кэшировать данные в ОЗУ, получение и форматирование данных из MySQL происходит медленнее, чем просто хранение обработанных данных в PHP.

Сведения о том, как обмениваться памятью, см. В разделе Чтение и запись глобальных переменных в скриптах в PHP

ответил(а) 2021-01-19T17:13:07+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема