Сейчас: 17:47:54   28-го марта 2024 г.
UsefulScript.ruСкриптыРазныеКэширование в файл
4
14

Сохранить (закэшировать) результаты выполнения скрипта в файл

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


Путем сохранения данных, полученных в результате выполнения какого-либо скрипта, можно значительно снизить нагрузку на сервер, т.к. при повторном выводе полученных результатов мы просто считываем их из сохраненного ранее файла, а не вычисляем повторно.


Перед тем, как приступить к сохранению полученных данных в файл, сначала необходимо определиться какой скрипт является "тяжелым" (содержит множественные обращения к MySQL, создает нагрузку на сервер и т.д.). Также рекомендуем все результаты выполнения скриптов, которые не являются динамическими (не часто обновляющиеся) сохранять в файлы на сервере.


Для примера на нашем сайте такой страничкой (обновляющейся через определенные промежутки времени) является страничка Статистики нашего сайта.


В приведенном ниже примере переменная $time_cashe=600 - устанавливает период обновления файла с результатами в секундах, data.dat - файл с результатами выполнения какого-либо скрипта, дата обновления которого является датой последнего выполнения скрипта.

PHP код:
<?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 секунд, то скрипт просто считает данные из файла и выведет их на экран.


Обратите внимание, что в файл будут сохранены (закэшированы) только те результаты выполнения скрипта, которые Вы выводите на экран браузера.


Все промежуточные данные (например, содержащиеся в переменных) сохранены не будут!

Дата создания: 16:15:36 08.10.2011 г.
Дата обновления: 22:36:47 08.03.2012 г.
Посещений: 7281 раз(а).

Закрыть
Ваше имя:
275 + 14 =
Добавить комментарий:
Ваше имя:
275 + 14 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 6

Какие темы необходимо добавлять на сайт?