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

Сервис обмена электронных валют


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

#11 Kismedia

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

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

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


Ну пусть это называется так. :)
Хотя в данном случае это не отражает всю суть задачи, это не просто одностороннее действие, запись в файл и все.

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


  • 0

#12 admin

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

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

Kismedia, напишите что вам нужно конкретно. Причём без подобных выражений:

реализовать кэширование переменной $titles учитывая значение $urlsape в некий текстовый файл

А конкретно: нужно записать в файл значение $titles или что вам там нужно. И если это так, то лучше в конце вашей функции сделать не вывод $titles в браузер, а просто возврат значения этой переменной с помощью return $titles. Я так думаю ;)
Повторюсь ещё раз, нужен алгоритм действий, потому что не все тут экстрасенсы :)
  • 0

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



#13 Kismedia

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

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

Хорошо, согласен.

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

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 "Данные не доступны";
}


Переменная $titles в конце имеет некий результат, заголовок страницы сайта с адресом $urlsape

Необходимо организовать хранилище в файле с расширением .txt следующей структуры:
$urlsape - $titles
$urlsape - $titles
$urlsape - $titles
.......

Проверяем переменную $urlsape, если ее содержимое уже имеется в файле, скажем Cache.txt, то забираем ее значение $titles, и соответсвенно выводим.
Если такой записи нет, то парсим согласно выше приведенному коду и результат записываем в файл Cache.txt. После чего ее тоже выводим.

Так, надеюсь понятнее.
  • 0

#14 Kismedia

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

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

Не знаю, Админ и surfer, извините если что ;) , но мне кажется что из первого поста было вполне понятно что требуется.
Я понимаю, конечно, что у меня слэнг "кривой" ,поэтому код еще парсера выложил.
  • 0

#15 surfer

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

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

не пойму в чем трудность для тебя?
не пойму почему ты уперся в кэширование?
задача, которую ты описал максимально тривиальная, самое сложное в ней это парсер.
  • 0

#16 Kismedia

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

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

В данном случае файл Cache.txt является хранилищем данных и предназначен для быстрого получения информации без использования обращений к стороннему серверу. А иными словами кэширование запросов (данных).
  • 0

#17 surfer

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

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

но это не самый быстрый способ, что ты выбрал
  • 0

#18 Kismedia

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

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

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


Ну хорошо, и как можно записать , хранить и выводить результаты работы парсера?
Каким способом?
  • 0

#19 surfer

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

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

БД самый быстрый способ, а если выводимые данные статичные, то их можно кэшировать
  • 0

#20 Kismedia

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

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

БД, согласен, самый быстрый , ну давайте разберем на примере работы с БД эту задачу.

P.S. Такая дискуссия разгорелась, не ожидал, даже на какой то момент пожалел что создал эту тему. ;)


  • 0

robot

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


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