Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 56

Где ошибка в коде по кешированию (создаются копии)

19.11.2019, 21:31. Показов 462. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// раздел настроек, которые вы можете менять
$cachedir = $_SERVER['DOCUMENT_ROOT'].'/cache/';
$cachetime = 3600; //время жизни кэша (1 час)
 
$thispage = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$cachelink = $cachedir.md5($thispage).".html";
if (file_exists($cachelink)) {
    $cachelink_time = filemtime($cachelink);
    // если кэш еще не устарел, читаем страницу из файла и отдаем браузеру
    if ((time() - $cachetime) < $cachelink_time) {
        readfile($cachelink);
        die();
    }
}
ob_start();
?>


А в конце скрипта добавим такие строчки

PHP
1
2
3
4
5
6
<?php
$fp = fopen($cachelink, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();
?>


как результат создаются снимки html страниц в папку cache

вида 46f18eaba10b90b641e0f4238ecc7c31.html

с этим все ок.

но вот по истечению времени $cachetime = 3600; создаются уже новые копии этих же страниц.

пытаюсь убрать md5 из $cachelink = $cachedir.md5($thispage).".html";

чтобы в папку кеш записывались эквиваленты страниц с url читабельным. ничего не записывается вообще.

проблема в том что со временем папка '/cache/ переполняется.

как бы мне держать в ней только одну копию страницы закешированной.

т.е например сайт имеет 100 страниц и в папке должно быть 100 файлов кеша и не больше.

а вот как исправить я что то не догадываюсь. помогите пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.11.2019, 21:31
Ответы с готовыми решениями:

Создаются копии существующих файлов
Здравствуйте, уважаемые! По роду деятельности я 1с-ник, так что сильно не пинайте :) Суть... стоит у меня дома сервак с win2003 x64 на...

Создаются копии существующих файлов
Здравствуйте, уважаемые! По роду деятельности я 1с-ник, так что сильно не пинайте Суть... стоит у меня дома сервак с win2003 x64 на...

Создаются ли копии объектов при операции присваивания?
Доброго времени суток! Допустим есть объекты одного класса a1, a2, a3. Насколько я понимаю, при операции присваивания a1=a2 создаётся...

3
 Аватар для TolikD
117 / 81 / 36
Регистрация: 30.07.2017
Сообщений: 371
19.11.2019, 22:50
PHP
1
2
3
4
5
6
7
// ...
    if ((time() - $cachetime) < $cachelink_time) {
        readfile($cachelink);
        die();
    } else
        unlink($cachelink);
// ...
0
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 56
20.11.2019, 11:03  [ТС]
еще проблему нашел не кто то ходит по не существующим страницам код ответа сервера 404. вот как бы сделать чтобы кеш на эти страницы не создавался?
0
 Аватар для TolikD
117 / 81 / 36
Регистрация: 30.07.2017
Сообщений: 371
20.11.2019, 15:28
ufaclub, Ну очевидно же, убрать кэширование для страницы 404.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.11.2019, 15:28
Помогаю со студенческими работами здесь

В system32 создаются копии файлов с добавлением расширения *.tmp
В папке system32 некоторые файлы повторяются,и к ним добавляется расширение tmp (asycfilt.dll.tmp asycfilt.dll)

Где ошибка в коде?
Всем здравствуйте. Подскажите пожалуйста по такому вопросу: Этот код некорректно работает. Там есть условия, если в условии 0, то выводим...

Где ошибка в коде?
&lt;? $links = file(&quot;file.txt&quot;); print_r($links); foreach ($links as $line_num =&gt; $line) { ...

Где ошибка в коде?
задача Для заданной функции y:=cos(t/2.3)+sin(t-2.4)-sqrt(t) вывести на экран значение функции, которые меньше -1 и соответствующие им...

Где ошибка в коде?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; char fun (char *p, char a, int c) { char b; int i,j; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru