Перейти к содержимому



Кэширование данных в .TXT файл (запись и вывод)

#1 Kismedia

Kismedia
  • Пользователь
  • 315 сообщений
  • Репутация: 0
0

Отправлено 17 Январь 2011 - 12:12

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

Решил начать с кэша в .TXT файл, думаю это по-проще в понимании будет, чем работать с БД (может ошибаюсь).

Опишу на своем примере и зачем это нужно мне.
Недавно в данной теме я, не без помощи пользователей форума, написал следующую функцию:

function parstitle ($urlsape){

if($html_content = @file_get_contents('http://' .$urlsape. '')){
preg_match_all( "|<title>(.*)</title>|sUSi", $html_content, $titles);
$titles = $titles[1][0];
if (mb_check_encoding($titles, 'Windows-1251') && !mb_check_encoding($titles, 'UTF-8')){
$titles = mb_convert_encoding($titles, 'UTF-8', 'Windows-1251');
}
if ($titles = "301 Moved Permanently") {
$html_content = @file_get_contents('http://www.' .$urlsape. '');
preg_match_all( "|<title>(.*)</title>|sUSi", $html_content, $titles);
$titles = $titles[1][0];
if (mb_check_encoding($titles, 'Windows-1251') && !mb_check_encoding($titles, 'UTF-8')){
$titles = mb_convert_encoding($titles, 'UTF-8', 'Windows-1251');
}
}
echo $titles;
}else echo "Данные не доступны";
}


Что делаем, парсим содержимое тега <TITLE> заданной страницы $urlsape и выводим результат в правильной (соответствующей сайту) кодировке из переменной $titles.

Вот, собственно и задача:
Как дописать, реализовать кэширование переменной $titles учитывая значение $urlsape в некий текстовый файл, допустим построчно, и потом вытягивать это значение по условию наличия и соответственно выводить результат. Тем самым сократив количество постоянных обращений и бессмысленного повторного парсинга сайтов.

 

 

  • 0

#2 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 17 Январь 2011 - 13:17

ob_start()
ob_get_contents()
ob_end_clean()

http://php.russofile.../chachig_in_php
  • 0

#3 admin

admin
  • Пользователь PRO
  • 5 272 сообщений
  • Репутация: 54

Отправлено 17 Январь 2011 - 13:23

Kismedia, на сколько я знаю, в PHP кешируется не в файл, а специальный буфер. Делается это с помощью функций, которые surfer указал во втором посте ;)
  • 0

#4 Kismedia

Kismedia
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 0

Отправлено 17 Январь 2011 - 13:26

surfer, Я так понимаю в приведенной статье рассматривается кэширование, вообще, содержимого страницы сайта, а не кэш определенных данных.


  • 0

#5 Kismedia

Kismedia
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 0

Отправлено 17 Январь 2011 - 13:32

admin, Нет, это не то. Может Вы меня не правильно поняли. Или скажу так, и как Вы себе это представляете, выполнить выше приведенную задачу с помощью?
ob_start()
ob_get_contents()
ob_end_clean(


  • 0

#6 Kismedia

Kismedia
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 0

Отправлено 17 Январь 2011 - 13:42

А если сайтов будет, скажем 1000 штук, необходимо организовать постоянное хранилище данных, запись и чтение.
  • 0

#7 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 17 Январь 2011 - 13:52

Я так понимаю в приведенной статье рассматривается кэширование, вообще, содержимого страницы сайта, а не кэш определенных данных.

не принципиально что кэшировать, я думаю тебе надо матчасть подучить и разобраться что такое кэширование и способы хранения данных

Нет, это не то. Может Вы меня не правильно поняли. Или скажу так, и как Вы себе это представляете, выполнить выше приведенную задачу с помощью?

я представляю

А если сайтов будет, скажем 1000 штук, необходимо организовать постоянное хранилище данных, запись и чтение.

а для этого используется база данных или файлы
  • 0

#8 admin

admin
  • Пользователь PRO
  • 5 272 сообщений
  • Репутация: 54

Отправлено 17 Январь 2011 - 14:03

Kismedia, то, что вам нужно, это не кеширование, а просто запись в файл ;)
  • 0

Сколько лет прошло, а ссылки всё ещё лучше покупать тут



#9 Kismedia

Kismedia
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 0

Отправлено 17 Январь 2011 - 14:09

а для этого используется база данных или файлы


Так вот об этом и речь.

Цитирую еще раз Админа:

Kismedia, на сколько я знаю, в PHP кешируется не в файл, а специальный буфер. Делается это с помощью функций, которые surfer указал во втором посте


я представляю

Возможно, но не думаю что данный способ будет наиболее подходяшим для этой задачи.

Вы сами пробовали хоть раз делать нечто подобное?
Подождем специалистов, либо отдам задачу прогеру , а потом выложу здесь результат.
  • 0

#10 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 17 Январь 2011 - 14:10

ты сам себе противоречишь, ты определись что ты хочешь, а потом правильно озвучивай задачу, а то тебе как ты озвучил и специалисты не помогут ;)
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru