[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как закэшировать вывод?
natalia2
Всем привет.

Ребята, помогите пожалуйста с кэшированием.
Опыта с кэшированием у меня нет, но встала одна задача.

Вот, есть код:

////////////////КОД///////////////////////////////

$T="";

$file_array = file("/file.txt");

for($i=0; $i < count($file_array); $i++)
{
$T.=$file_array[$i];
}

echo $T;

////////////////КОД///////////////////////////////

И есть очень много запросов к странице с этим кодом, в котором постоянно подключается файл file.txt и содержимое этого файла выводится на экран при каждом запросе.

ВОПРОС:
Помогите, пожалуйста, с кэшированием.
Как это можно реализовать в вышеуказанном коде?
Чтобы выводился кэшированный файл, а потом, через какое-нибудь время кэш удалялся и выводилось новое содержание этого файла.
Как это можно сделать?


И ещё, как по вашему опыту, функция array_unique и file сильно ресурсы кушают?




Спустя 4 минуты, 8 секунд (20.01.2012 - 14:40) inpost написал(а):
Кроме как скинуть ссылочку на мануал, ничего не идёт в голову:
http://docs.php.net/manual/ru/book.memcache.php

Ну, или, помещать всё это в один файл какой-нибудь: template.tpl , который и будешь подгружать.

Спустя 11 минут, 22 секунды (20.01.2012 - 14:51) asokol написал(а):
1. Дать прямую ссылку на file.txt. Или это упрощенный пример приведен?
2. print file_get_contents('file.txt'), include('file.txt').

И ещё, как по вашему опыту, функция array_unique и file сильно ресурсы кушают?
Смотря в каких комбинациях и с какими данными используются.

Спустя 10 часов, 22 минуты, 42 секунды (21.01.2012 - 01:14) natalia2 написал(а):
Цитата
1. Дать прямую ссылку на file.txt. Или это упрощенный пример приведен?


А разве такая запись:
$file_array = file("/file.txt");


будет отличатся по скорости от записи ниже?

$file_array = file(ПОЛНЫЙ ПУТЬ К ФАЙЛУ."/file.txt");



Спустя 8 часов, 56 минут, 43 секунды (21.01.2012 - 10:11) asokol написал(а):
1. Я не знаю Вашей задачи, но как описано в первом посте, получается, что у вас есть файл file.php, в котором считывается файл file.txt и просто выводится без какой-либо обработки строк. В таком случае можно дать прямую ссылку на file.txt - http://domain.ru/file.txt вместо http://domain.ru/file.php. И прямая ссылка на файл и полный путь к файлу - это разные вещи.

Спустя 4 часа, 46 минут, 18 секунд (21.01.2012 - 14:57) alex12060 написал(а):
natalia2

Кешировать? Ну для начала, нужно опредилить, как часто изменяется этот файл.
Если не так уж и часто, то можно просто сделать так:

1. Собрать в переменную всю инфу
2. Создать файл (timestamp).cache.php
3. Записать в этот файл значение готовое
4. Делать проверку, если @время сейчас@ > (timestamp) + 20 минут , то сделать новый вывод, записать новый кеш файл и удалить старый, иначе, сделать вывод (подключением) кеш файл.

Алгоритм не сложный, но, эффективный.

Спустя 2 дня, 8 часов, 36 минут, 31 секунда (23.01.2012 - 23:34) natalia2 написал(а):
Всем спасибо за ответы.

alex12060 отдельное спасибо за нужный алгоритм.

Спустя 24 минуты, 16 секунд (23.01.2012 - 23:58) asokol написал(а):
natalia2, скажите, Вы собираетесь кэшировать вот это?
$T="";
$file_array = file("/file.txt");
for($i=0; $i < count($file_array); $i++) {
$T.=$file_array[$i];
}
echo $T;

Спустя 15 часов, 2 минуты, 2 секунды (24.01.2012 - 15:00) natalia2 написал(а):
asokol
Да, возможно ли это? В файл file.txt постоянно запись идёт, и хотелось бы, чтобы временами, на выходе, отображалась старая запись, пока новые записи вносятся в файл.

Спустя 31 минута, 32 секунды (24.01.2012 - 15:31) killer8080 написал(а):
Цитата (asokol @ 23.01.2012 - 22:58)
$T="";
$file_array = file("/file.txt");
for($i=0; $i < count($file_array); $i++) {
$T.=$file_array[$i];
}
echo $T;

заменяем на это
echo file_get_contents("/file.txt");

и кешировать здесь нечего ;)

или проще
readfile("/file.txt");

Спустя 7 часов, 53 минуты, 33 секунды (24.01.2012 - 23:25) natalia2 написал(а):
killer8080
Спасибо за совет, но просто там для того и выводиться построково $file_array[$i], там ещё обработка строк есть, удаление не уникальных массивов, перемешивание и т.п.

То есть так: $T.=AR_FUNCTIONS($file_array[$i]);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.