Загрузка файла с сервера и вывод содержимого

123 4
[Удален]
#11

Насчёт полного кода: это и есть полный код:

<?
$site_url = "http://site.ru/file.txt";
$referer = "http://google,com";
function remote_file ($site_url,$referer)
{
global $out_info;
$timeout=10;
$user_agent = "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $site_url);
curl_setopt($ch, CURLOPT_REFERER, $refer);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch,CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 2);
curl_setopt($ch, CURLOPT_HEADER, 0);
$tmp_result = curl_exec($ch);
curl_close($ch);
if($tmp_result){return $tmp_result;}
else{return false;}
}
echo phpinfo();
?>
SD
На сайте с 16.10.2006
Offline
62
#12

Я делаю так (На звание самого лучшего решения не претендую, так что прошу не бить бо репе):


$file_url = "http://site.ru/file.txt";
$content = @file_get_contents($file_url);
echo $content;

Если требуются операции над содержимым файла, то можно усложнить процесс:

Можно распарсить содержимое с помощью к примеру preg_match_all в массив и выводить как необходимо. Можно также добавить всё задание в cron и запускать каждую ночь, складывая всё это дело в базу, а выводить уже из собственной базы - так будет быстрее для посетителя вашего сайта.

От хостера требуется поддержка чтения содержимого файлов с удалённых серверов (ПОка не встречал хостеров, этого не поддерживающих).

PHP Web Developer, traveler, blogger, journalist
F
На сайте с 12.09.2003
Offline
120
#13

курл включен у тебя

делай через file_get_contents

быстрее будет в твоем случае

[Удален]
#14

ShaDeRzz - спасибо! Получилось!

Хм.. Не сочтите за наглость, а можно-ли сделать кэширование для этой операции?

Допустим, загружать файл только раз в 10 часов? ;)

[Удален]
#15
курл включен у тебя

А бывает выключен когда-нибудь?

Или часто распространены хостинги, где бывает выключен?

SD
На сайте с 16.10.2006
Offline
62
#16
ReJ:
Не сочтите за наглость, а можно-ли сделать кэширование для этой операции?

я навскидку выжу 2 варианта решения вопроса:

1 вариант: копировать содержимое файла к себе на сервер (тоесть создавать на сервере файл, куда кидать сграбленную инфу). И при выводе инфи проверять, если дата изменения файла на твоём сервере позже чем 10 часов назад, то снова лезть на чужой сервак, извлекать инфу и сохранять в в файл на своём сервере, если файл менялся меньше чем 10 часов назад - то читать и выводить инфу из твоего файла.

2 вариант: добавить процесс в крон, как я писал в предыдущем поста.

Сорри, по памяти точные команды и функции не напишу - изложил лиш алгоритм.

F
На сайте с 12.09.2003
Offline
120
#17

ReJ,

бывает что выключен. в основном у рухостов, типа мастерхост.

[Удален]
#18

Да уж, насчёт кэширования, это делема 😕

Ещё сложнее, чем с загрузкой

Shtogrin
На сайте с 02.11.2006
Offline
95
#19

$name='save.txt';

if(!is_file($name) || filemtime($name)<time()-10*60*60)
{
$file_url = "http://site.ru/file.txt";
$content = @file_get_contents($file_url);
if($content)
file_put_contents($name,$content);
}
else
$content = file_get_contents($name);
echo $content;
www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
[Удален]
#20

Shtogrin - вставил этот код.

Пишет ошибку:

Fatal error: Call to undefined function: file_put_contents() in /home/user/public_html/page/script.php on line 8
123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий