Сохранить (закэшировать) результаты выполнения скрипта в файл
Данный PHP код может быть чрезвычайно полезным в том случае, если Вам необходимо показывать результаты выполнения какого-либо скрипта не одному посетителю Вашего сайта, а нескольким в течение указанного времени. Таким образом "тяжелый" скрипт можно не выполнять несколько раз для каждого посетителя в отдельности, а выполнить всего один раз и сохранить полученные результаты в файл и подгружать их до тех пор, пока они не "устареют"!
Путем сохранения данных, полученных в результате выполнения какого-либо скрипта, можно значительно снизить нагрузку на сервер, т.к. при повторном выводе полученных результатов мы просто считываем их из сохраненного ранее файла, а не вычисляем повторно.
Перед тем, как приступить к сохранению полученных данных в файл, сначала необходимо определиться какой скрипт является "тяжелым" (содержит множественные обращения к MySQL, создает нагрузку на сервер и т.д.). Также рекомендуем все результаты выполнения скриптов, которые не являются динамическими (не часто обновляющиеся) сохранять в файлы на сервере.
Для примера на нашем сайте такой страничкой (обновляющейся через определенные промежутки времени) является страничка Статистики нашего сайта.
В приведенном ниже примере переменная $time_cashe=600 - устанавливает период обновления файла с результатами в секундах, data.dat - файл с результатами выполнения какого-либо скрипта, дата обновления которого является датой последнего выполнения скрипта.
<?php
$time_cashe=600;
$lines_time = filemtime('cashe/data.dat');
if (time(true)-$lines_time > $time_cashe) {
ob_start();
ob_clean();
?>
Здесь располагается Ваш скрипт,
результаты выполнения которого необходимо поместить в файл!!!
<?php
$buffer_cashe=ob_get_contents();
ob_end_clean();
echo $buffer_cashe;
$r=fopen("cashe/data.dat","w+");
fputs($r, $buffer_cashe);
fclose($r);
}
else {
$lines_cashe = file('cashe/data.dat');
foreach ($lines_cashe as $line_cashe_num => $line_cashe) echo $line_cashe;
}
?>
Таким образом, при обращении к страничке, содержащей данный код, будет получено время последнего изменения файла data.dat. Если разница между последним обновлением и текущим временем составит более 600 секунд, то будет выполнен скрипт получения каких-либо данных, результаты которого будут сохранены в файл data.dat. Если же разница между последним обновлением и текущим временем составит менее 600 секунд, то скрипт просто считает данные из файла и выведет их на экран.
Обратите внимание, что в файл будут сохранены (закэшированы) только те результаты выполнения скрипта, которые Вы выводите на экран браузера.
Все промежуточные данные (например, содержащиеся в переменных) сохранены не будут!
Перед публикацией все комментарии проходят обязательную модерацию!
Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.