Как записать данные в файл? php

12
S
На сайте с 30.09.2009
Offline
116
2337

Друзья, подскажите пожалуйста. В странице на php есть такой код.

Как сделать так чтобы он не выполнялся какждый раз когда юзер открывает данную страницу.

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


<?php
//массив в котором будем хранить названия файлов
$files = array();
//Указываем рабочую папку по умолчанию
$url = 'proizvoditeli';
//Проверяем, является ли директорией
if (is_dir($url)) {
//Проверяем, была ли открыта директория
if ($dir = opendir($url)) {
//Сканируем директорию
while (false !== ($file = readdir($dir))){
//Убираем лишние элементы
if ($file != '.' && $file != '..') {

//если содержит .php значит нужный нам файл $file будет указывать путь назв файла
if (ereg ( ".php", $file)){
// Добавим полученный файл в массив
$files[] = $file;
} }
}
//Закрываем директорию
closedir($dir);
}
}

//сортируем названия файлов
if (sort($files)) {
foreach ($files as $value) {
$file = $value;
//удаляем 4 последних символа в названии файлов $file2 будет названием модели
$file2 = substr_replace($file, '', -4);
//меняем - на пробел
$file2 = ereg_replace ("-", " ", $file2);
//первые буквы слов переводим в верхний регистр
$file2 = ucwords ( $file2 );

echo '<li><a href="proizvoditeli/'.$file.'">'.$file2.'</a></li> ';
}
}
?>
Перелинковку сделал. Теперь думаю куда потратить денежки - сапа, мира или блоги :)
D
На сайте с 09.07.2009
Offline
79
#1
S
На сайте с 30.09.2009
Offline
116
#2
digwnews:
Кэширование чтоли?
http://phpclub.ru/faq/cahcing/CaptureServerSideOutputForCaching

Нет не кеширование. Именно сохранить данные в файл и брать их от туда.

Т.е. есть страница сайта - её посещают каждые 5 минут и каждый раз в настоящий момент выполняется вышеуказанный код - смотрит определенную папку с файлами и выводит на них ссылки. Каждые 5 минут нет смысла проверять данную папку, т.к. там так часто не появляются новые файлы.

То что код выше - это только данные по производителям, но есть ещё аналогичный код проверки моделей и т.д. поэтому надо что то типа записи данных в Бд или файл, я даже не знаю. спасибо

D
На сайте с 09.07.2009
Offline
79
#3

Ну так это и есть кеширование.

Нужно лишь записать в файл содержимое, выведенное на экран?

S
На сайте с 28.10.2005
Offline
311
#4

Сохраните сгенерированный HTML-код и обновляйте раз в сутки

firefox19
На сайте с 05.11.2009
Offline
34
#5

сделайте вывод

echo '<li><a href="proizvoditeli/'.$file.'">'.$file2.'</a></li> ';

не на экран, а в любой файл и подключайте его (include, file_get_content и т.д.), а этот скрипт с обновлением запускайте по КРОНу или его заменителям.

Ваши идеи - наша работа (http://yaweb.ru) Продам Сайт агентства недвижимости (/ru/forum/561489)
sashka_
На сайте с 27.01.2010
Offline
103
#6

делаем чё та на подобии


$file = "cache.txt";
if(file_exists($file) and /* тут делаешь проверку на дату создания файла и сегодняшнюю дату в гугле найдёшь эту функцию забыл =(*/)
{
echo file_get_contents($file);
}
else /* выполнение скрипта*/
Знаю PHP, JS, jQuery. Помощь для вашего сайта. (/ru/forum/840509).
S
На сайте с 30.09.2009
Offline
116
#7
firefox19:
сделайте вывод

не на экран, а в любой файл и подключайте его (include, file_get_content и т.д.), а этот скрипт с обновлением запускайте по КРОНу или его заменителям.

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

зы Не подскажете - как вывод в файл реально сделать? это какой то другой метод или это опять же - кеширование?

просто подумал и вправду сделать вывод в файл раз в сутки и выводить сам файл всегда.

jokerov
На сайте с 18.07.2008
Offline
102
#8
stroydomen:

зы Не подскажете - как вывод в файл реально сделать? это какой то другой метод или это опять же - кеширование?
просто подумал и вправду сделать вывод в файл раз в сутки и выводить сам файл всегда.

Функция fwrite или file_put_contents

firefox19
На сайте с 05.11.2009
Offline
34
#9

stroydomen, зачем? Никаких проверок, обновление файла по расписанию никак не будет связано с процессом вывода.

Вместо:


if (sort($files)) {
foreach ($files as $value) {
$file = $value;
//удаляем 4 последних символа в названии файлов $file2 будет названием модели
$file2 = substr_replace($file, '', -4);
//меняем - на пробел
$file2 = ereg_replace ("-", " ", $file2);
//первые буквы слов переводим в верхний регистр
$file2 = ucwords ( $file2 );

echo '<li><a href="proizvoditeli/'.$file.'">'.$file2.'</a></li> ';
}
}

пишите:


$ffile = "link.txt";
$fa = file($ffile);
$ff=fopen($file,"w");

if (sort($files)) {
foreach ($files as $value) {
$file = $value;
//удаляем 4 последних символа в названии файлов $file2 будет названием модели
$file2 = substr_replace($file, '', -4);
//меняем - на пробел
$file2 = ereg_replace ("-", " ", $file2);
//первые буквы слов переводим в верхний регистр
$file2 = ucwords ( $file2 );

fputs($ff,'<li><a href="proizvoditeli/'.$file.'">'.$file2.'</a></li> ');
}
}
fclose($ff);

И запускайте этот скрипт по КРОНу раз в день.

А в нужном месте страницы просто впишите


<? include "link.txt"; ?>

или подключайте кучей других способов

Надеюсь доступно объяснил :)

S
На сайте с 30.09.2009
Offline
116
#10

firefox19

спасибо Вам. С кроном не знаком, поэтому попробую сделать проверку файла ff на то что если он старше суток то его перезаписать выполнив скрипт.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий