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

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


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

#21 surfer

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

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

Ну так начни, или ты ждешь, когда за тебя сделают? повторюсь эта задача с БД очень простая! Но нет общей концепции как это будет работать, поэтому нельзя предложить готовое решение. Ты даже это не удосужился предложить полностью тз, а выдумываешь на ходу.
Понимаешь, я уже неоднократно об этом писал, повторюсь еще раз.
Для разработчика код вторичен, первично понимание задачи в целом.
Ты же как и многие здесь почему-то поступают иначе. Т.е. сначала придумывается колесо, потом приходит идея а как их соединить вместе, а потом о, а как же сделать, чтоб они перемещались и т.д. я ни разу не видел чтоб так автомобили делали.
На самом деле есть тз, где отображен весь автомобили, который состоит из определенных блоков, которые выполняют определенные функции, потом создаются эти блоки и собираются воедино. Потом тестируется и если что не так перерабатывается тот или иной блок.
  • 0

#22 Kismedia

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

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

Вообщем, ладно, без обид ;) спасибо за помощь!

БД самый быстрый способ


Почитай что такое Кэширование в PHP


Можно так же добавить, "почитай основы PHP" и т.д.

Ну так начни, или ты ждешь, когда за тебя сделают?


Если бы я мог начать , я бы не создавал эту тему.
  • 0

#23 surfer

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

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

ну так с этого и надо начина:

ребят помогите, я в php нуб, есть вот такая задача:

Описание: которое ты еще не удосужился написать

как реализовать?

можно конечно дождаться, когда Леха придет и сделает за тебя
  • 0

#24 Kismedia

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

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

можно конечно дождаться, когда Леха придет и сделает за тебя


Вот именно, "когда Леха придет", так а смысл тогда бросать такие красивые фразы:

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


ребят помогите, я в php нуб, есть вот такая задача


И чем Вы мне поможете?

Вот поэтому я написал:

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


Так ты принял это в штыки, как я понял, и начался спор. Хотя подтверждений (примеров, сайтов) реальных знаний твоих PHP я не вижу.

Вот есть пользователи :matroskin8, yury, Banderas ...Админ.

Так я действительно вижу что люди "шарят" ,во всяком случае больше меня.

Без обид ;) , но меня ,допустим, этот момент напрягает.

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

#25 admin

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

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

Kismedia, обижаться нет смысла, Дима по делу говорит ;)
Распиши точный алгоритм, или, как выразился surfer, ТЗ. Например:
1. Покдлючиться к базе данных.
2. Проверить, существует ли нужная нам таблица с колонками urlsape и titles. Если нет, то создать.
3. Проверить, существует ли в данной таблице $urlsape.
3.1 Если существует, то выводим соответствующий ему $titles.
3.2 Если не существует, то запускаем вашу функцию parstitle ($urlsape) и результат ($titles) сохраняем в таблице (вместе с $urlsape).

Ну вот примерно так, я возможно не до конца понял то, что вам нужно ;)
Когда будет подобный алгоритм, то можете начинать писать, обращаясь к документации по PHP, справочнику функций и т.п. А если какие-то отдельные моменты не будут получаться, то спрашивайте на форуме тогда. Просто нет смысла никакого с того, если вам кто-то сейчас возьмёт и напишет эти 15-25 строк кода, ведь вы ничему не научитесь и в следующий раз так же само будете спрашивать.
  • 0

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



#26 Kismedia

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

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

Ладно, попробую сам, если что отпишусь здесь по результатам или проблемам. ;)
  • 0

#27 Kismedia

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

Отправлено 18 Январь 2011 - 11:36

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

file_exists
fopen
fread
fwrite
flose


Согласно ниже приведенному примеру:

if( file_exists( "cache.txt" ) ) // Проверяем файл на существование
{
if( !is_writeable( "cache.txt" ) ) // Проверяем файл на НЕ возможность записи
{ die( "Вы не можете записать в этот файл" ); }
// Завершаем выполнение скрипта, выводом сообщения об ошибке
}
else // Если файл не существует и нам все-таки надо его создать.
{
if( !touch( "cache.txt" ) )
{ die( "Нельзя создать файл" ); }
// Завершаем выполнение скрипта, выводом сообщения об ошибке

$f = fopen( "cache.txt" , "w" );
fwrite( $f , $urlsape. '-' .$titles ); // Пишем в файл содержимое $urlsape и $titles через дефис
flose( $f );
}


Вопрос, "fwrite( $f , $urlsape. '-' .$titles ); // Пишем в файл содержимое $urlsape и $titles через дефис" , как правильно записать данное содержимое в новую строку?

И самое главное, как потом проверить существование $urlsape в cache.txt и взять соответствующий $titles, который стоит в этой строке, через дефис?

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

#28 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

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

Насколько я понял задачу - это надо просто осуществить запись в файл строки, содержащей УРЛ и его титл через тире. А затем просто выводить титл, если файл не пуст. Поправь, если неточно понял задачу.
Код:

<?php

$urlsape = 'http://google.com.ua'; // цель
$titles = 'iGoogle'; // сюда попадет распарсенный титл
$file = 'cache.txt'; // в этот файл будем писать

//если файла нет, то создаем его и записываем в него строку
if(!file_exists($file)){
$handle = fopen($file, "w");
if(fwrite($handle, $urlsape. '-' .$titles) === false){
echo "Невозможно записать в файл";
}else echo "Запись в файл прошла успешно. Можно обновить страницу, чтобы посмотреть содержимое";
}else{
//если файл есть, то считываем его
$handle = fopen($file, "r");
while(!feof($handle)){
$read = fgets($handle);
if($read == null){
echo "Файл пуст. Удалите его либо запишите что-то вручную в формате: url-title";
}else{
//если файл не пуст, то работаем с его содержимым
$res = explode("-", $read); // заносим в массив элементы строки
//выводим весь массив
echo "<pre>";
print_r($res);
echo "</pre>";
//выводим нужный элемент массива
echo $res[1];
}
}
}
?>


  • 0


#29 Kismedia

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

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

Насколько я понял задачу - это надо просто осуществить запись в файл строки, содержащей УРЛ и его титл через тире. А затем просто выводить титл, если файл не пуст. Поправь, если неточно понял задачу.


Проверить сначала файл cache.txt на наличие значения заданного $urlsape (URL) в первой колонке.
Если это содержимое есть то вывести не весь файл, а только часть строчки после "-" в которой было найдено данное значение то есть $titles.
Если такого URL ($urlsape) в файле cache.txt нет, то запускаем парсер:

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


После чего записываем в файл cache.txt полученные значения в новой строке "$urlsape. '-' .$titles"


Вот как то так.

Спасибо за помощь! ;)

P.S. Проверку файла на существование и запись, в принципе, можно убрать.
  • 0

#30 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

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

А, т.е., в файле будет не одна строка, а несколько + организовать надо дозапись. Ок, попробуем немного переписать.
  • 0


robot

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


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