потерто 10 симв
Нет, все таки не работает
<?php // Если существует кэшированная версия… $filecache=$_SERVER['DOCUMENT_ROOT'].'cache/2.cache'; //Файл с кэшем, на папку не забываем 777 $time_sec=time(); @$time_file=filemtime($filecache); if (($time_sec-$time_file)>60) { // Читаем и выводим файл readfile('cache/2.cache'); exit(); } // Начинаем буферизацию вывода ob_start();
мне кажется тут ошибка
if (($time_sec-$time_file)>60) {
$filecache=$_SERVER['DOCUMENT_ROOT'].'/somefile.txt'; //Файл с кэшем в корне сайта $time_sec=time(); @$time_file=filemtime($filecache); if (($time_sec-$time_file)>3600) {ТУТ МЫ ЧТО-то ДЕЛАЕМ}
Вот за это Спасибо.
Жаль нет более щадящего сервер варианта.
Я хочу избавиться от постоянного обращения скрипта к серверу, получается шило на мыло вроде, верно? Т.е. у меня скрипт открывает папку с файлами и сканирует их названия. Это он делает с каждым заходом юзера на страницу.
Да, спасибо её как раз изучаю, но она тоже показывает дату изменения.
<?php // Пример вывода: в последний раз файл somefile.txt был изменен: December 29 2002 22:16:23. $filename = 'somefile.txt'; if (file_exists($filename)) { echo "в последний раз файл $filename был изменен: " . date ("F d Y H:i:s.", filemtime($filename)); } ?>
А мне бы тупо чтобы проверить - если прошло более 3600 секунд, то снова перекешировать.
не так
$t = filectime("counter.txt"); echo $t-1282737537;
не то показывает
stroydomen добавил 25.08.2010 в 16:27
Задача такая.
1. узнать дату создания файла (вернее провеерить - если он не менялся за последний 1 час то ....
2.
<?php // Если существует кэшированная версия… if (file_exists('./cache/2.cache')) { // проверить дату кеширования, если давно - перекешировать if (filectime("./cache/2.cache") < 100) { // Читаем и выводим файл readfile('./cache/2.cache'); exit(); } }
// проверить дату кеширования, если давно - перекешировать
спасибо, но тогда не очень удобно. Хочется просто укзнать дату изменения файла. Будем искать.
Не похоже. Файл создал 5 сек назад - выводит значение "1282737537" - вернее это дата последнего изменения файла, а изменил его я только что.
Да спасибо, подумал, возможно это наиболее подходящий для моего случая вариант.
stroydomen добавил 25.08.2010 в 15:17
Делаю кеширование, подскажите пожалуйста, кто знает, что за ошибка у меня?
Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, webmaster@katalogk.stroyt.ru and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request. -------------------------------------------------------------------------------- Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.13 Server at www.katalogpli.ru Port 80
Делаю как написано здесь http://htmlweb.ru/php/php_cache.php
Кэширование ваших страниц в 5 шагов
Ещё вылезает проблема того что $s у каждой страницы свой. Т.е. для одной страницы массив получается из одного набора слов, у другой страницы совсем другой. Получается что
$ffile = "link.txt";
этих файлов linkk.txt должно получиться много для каждой страницы свой.
Ладно я понял, перечитаю ещё раз ветку. видимо моя затея не реальна. спасибо
Пока что проблемы нет, но готовлюсь на всякий случай, мало ли из за скриптов проверки папок на то какие файлы есть и их вывод в виде ссылок приведет к повышенной нагрузке сервера и хостер меня отрубит. Может и зря я раньше времени, но не вижу другого варианта.
Грубо говоря - сейчас есть скрипт который вставляется в страницу через инклуд. Скрипт проверяет папку и названия файлов содержащихся в ней. Если начало названия файла содержит $s то это нужный файл для данной страницы. Он записывает название файла в массив. Так проверяет все файлы в результате в массиве получается - 3-10 названий файлов. Далее названия режем, переводим первую букву в вехний регистр и выводим в виде ссылки на модель. Таким образом для данной странийы получаются "другие модели этого производителя". Может есть способ проще, но я сделал так, так как другого варианта не придумал.
В настоящий момент получается что этот скрипт выполняется при каждом посещении страницы юзером, а такой скрипт выполняется на всех страницах = вот и думаю что это будет большая нагрузка на сервер хостера. Нет?
Ок. Спасибо. А что думаете по поводу этого варианта?
Вырезка из текста
Вне всякого сомнения, некоторые части отправляемой вами посетителю страницы изменяются очень редко, например, такие как шапку, меню и нижний колонтитул. Однако другие части, типа таблиц, содержащих обсуждения в форуме, могут изменяться довольно часто. Буферизация вывода может использоваться к кэшированию разделов страницы в отдельных файлах, затем создавать из них страницу – решение, устраняющее необходимость повторных запросов к базе данных, циклов while и т.д. Вы можете назначать каждому блоку страницы дату истечения срока, после которой пересоздаётся кэш-файл, или кроме того, вы можете включить в ваше приложение механизм, который будет удалять кэш-файл каждый раз, когда сохранённый в нём контент изменён. Вот пример, демонстрирующий этот принцип: http://phpclub.ru/faq/cahcing/CaptureServerSideOutputForCaching