[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кэширование массива в файл
vagon
Пытаюсь кэшировать данные в файл для снижения кол-ва SQL запросов, и потом читать из файла, обновлять его по мере добавления/обновления новостей... Код простой:

require_once('config.php');
$sql="SELECT * FROM `tb_news` ORDER BY id DESC";
$res = db_query(__FILE__, __LINE__, $sql);
while ($row = mysql_fetch_array($res))
{
echo $row['data']; echo $row['newstext'];
}
// в файл пытаюсь писать с помощью такого кода:
// это только 2 отдельных фрагменты кода для примера, пытался делать по-разному. проблема в том, что КАК это нужно делать я не знаю...

$writen = "<? \n
\$row['data'] = \"{$row['data']}\";\n
\$
row['newstext'] = \"{$row['newstext']}\";\n
?>";
$fstats = @fopen("news.inc","w+");
@fwrite($fstats,$writen);
@fclose($fstats);


С простыми переменными проблем не возникает, а здесь цикл. Возился пару дней, - безрезультатно. И не надо смеятся, - я не программист! Знаю, что нужно использовать функции serialize и unserialize, перерыл весь интернет, а готового примера не нашел... Просьба к опытным php-шникам. Просвятите пожалуйста, как это сделать?



Спустя 42 минуты, 20 секунд (18.01.2011 - 21:40) twin написал(а):
    require_once('config.php');
$sql="SELECT * FROM `tb_news` ORDER BY id DESC";
$res = db_query(__FILE__, __LINE__, $sql);
$assoc = array();

while ($row = mysql_fetch_assoc($res))
$assoc[] = $row;

$news = serialize($assoc);
file_put_contents("news.inc", $news);

//////////////////////////////////////////

$news = file_get_contents("news.inc");
$assoc = unserialize($news);

Спустя 15 часов, 46 минут, 58 секунд (19.01.2011 - 13:27) vagon написал(а):
Спасибо, работает! Еще, если не трудно подскажите пожалуйста, как вывести содержимое из $assoc в удобочитаемом виде, т.е. хотелось бы применить к выводимым строкам форматирование типа переносов и прочего? print_r ($assoc); выводит текст со всем мусором...

Спустя 6 дней, 6 часов, 35 минут, 23 секунды (25.01.2011 - 20:02) alex12060 написал(а):
Что он вообще выводит?

Спустя 5 минут, 16 секунд (25.01.2011 - 20:08) vagon написал(а):
print_r выводит:

Array ( [0] => Array ( [id] => 38 [data] => 16.01.2011 [newstext] => Текст новости ) [1] => Array ( [id] => 37 [data] => 12.01.2011 [newstext] => Текст второй новости.

Спустя 1 час, 34 минуты, 36 секунд (25.01.2011 - 21:42) MNO121280 написал(а):
Функция print_r предназначена для отладки. Массив надо выводить в цикле foreach.

Спустя 27 минут, 46 секунд (25.01.2011 - 22:10) vagon написал(а):
Не получается с foreach


foreach ($assoc as $key => $value) {
echo "<b>$value $key</b><br>";
}


выводит:
Array 0
Array 1
Array 2
Array 3
Array 4
Array 5
Array 6
Array 7
Array 8
Array 9
Array 10
Array 11
Array 12
Array 13
Array 14
Array 15
Array 16
Array 17
Array 18
Array 19
Array 20
Array 21
Array 22
Array 23
Array 24
Array 25
Array 26

Спустя 5 минут, 52 секунды (25.01.2011 - 22:16) MNO121280 написал(а):
Посмотри здесь http://irbis-team.com/15/5/5. Там в уроке все хорошо расписано. Если что неясно, можешь спросить здесь же в теме.

Спустя 1 минута, 52 секунды (25.01.2011 - 22:18) Snus написал(а):
vagon
echo '<table border="1">';
foreach($assoc as $key => $val){
echo '<tr>';
echo '<td>'.$val['id'].'</td>';
echo '<td>'.$val['data'].'</td>';
echo '<td>'.$val['newstext'].'</td>';
echo '</tr>';
}
echo '</table>';

Спустя 20 минут, 57 секунд (25.01.2011 - 22:39) vagon написал(а):
Работает!!!!!!! Snus, спасибо огромное! Все просто если знаешь как сделать smile.gif MNO121280, я это читал пару дней назад. Пытался что-то изобразить, не получилось, - не программист.

Спустя 2 минуты, 35 секунд (25.01.2011 - 22:41) MNO121280 написал(а):
vagon Не унывай все у тебя получится. Главное продолжай идти вперед. Как говориться: "Дорогу осилит идущий!" Москва то же не сразу строилась.
Быстрый ответ:

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