Jump to content
  • 0

Как сохранить результат simplexml_load_file


riki
 Share

Question

Если для чтения новостей использовать simplexml_load_file, то возникает вопрос кєширования объекта возвращаемого simplexml_load_file

$rss = simplexml_load_file('$url');


// дальше сохранить $rss
// на строне клиента?

// на веб сервере?

В сети есть вариант. Но есть ошибка

file_put_contents(rss/news.xml) [function.file-put-contents]: failed to open stream: No such file or director ...

file_get_contents($url) - не хочет ничего закачивать

<?php
// Трансляция новостей с 3DNews.ru
// http://www.3dnews.ru/news/rss/

// Имя файла для хранения RSS на локальном сервере
$filename = 'rss/3dnews.xml';
// URL RSS потока
$rss_url = 'http://www.3dnews.ru/news/rss/';

// Закачка файлов XML
// Произвести проверку на то, что файл уже закачен
if (!file_exists($filename)) {
// Закачать и сохранить
download($rss_url, $filename);
}

// Создание объекта SIMPLEXML и загрузка документа
$xml = simplexml_load_file($filename);

....

// Проверка на то, что если файл устарел более, чем на 12 часов - качать и сохранить новый
if (time() > filemtime($filename) + 60*60*12) {
// Закачать и сохранить
download($rss_url, $filename);
}

###########################################################################
######################################
function download($url, $filename) {
// Закачать файл с указанного URL и сохранить с определенным именем
//читает весь файл в строку
$file = file_get_contents($url);

if ($file) file_put_contents($filename, $file);
}
?>

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

1. Строковые значения следует заключать в кавычки:

file_put_contents('rss/news.xml', $data)

2. Папка rss существует?

3. И, да, надо бы ещё указывать что именно записывать в файл, то есть параметр $data

Link to comment
Share on other sites

  • 0

Да, не было папки.

Какой нужно указывать параметр $data

Флаги FILE_USE_INCLUDE_PATH или FILE_APPEND ?

int file_put_contents ( string $filename , mixed $data [, int $flags [, resource $context ]] )

Функция идентична последовательному вызову функций fopen(), fwrite() и fclose(). Возвращаемым функцией значением является количество записанных в файл байтов.

Параметр flags может принимать значение FILE_USE_INCLUDE_PATH и/или FILE_APPEND. Используйте FILE_USE_INCLUDE_PATH с осторожностью.

Также вы можете передать (одномерный) массив в качестве параметра data . Это будет эквивалентно вызову file_put_contents($filename, join('', $array)).

Edited by riki
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy