знатоки как сделать запрос file_get_contents

Статус
В этой теме нельзя размещать новые ответы.

асс

Мой дом здесь!
Регистрация
13 Окт 2006
Сообщения
762
Реакции
230
задача такая
Хочу чтоб скрпит не зависал на долго
а отдавал ответ
например если на источнике нет запрашиваемой ссылки
которую беру так

то выдавал типа
ошибку сайт недоступен

тоесть типа так
PHP:
if ($str = file_get_contents('http://all.asp')
{
echo"ok";    
}
else 
echo"status 500";
}
как сделать проверку на статуст сайта перед получением ссылки.
И если статус 20 то брать ссылку
если другой статус то завершать работу
на exit/
 
если хочешь контролировать статус ответа, то забудь этот путь.
используй уже готовые библиотеки/классы.
например вот этот Для просмотра ссылки Войди или Зарегистрируйся
 
Проще всего посмотреть в сторону curl
бибилиотека довольно проста в освоении и позволяет очень много. В том числе получить заголовки, не получая тела запроса. А $str = file_get_contents('http://ya.ru/'); не вышло, т.к. там сначала возвращается пустая страница, а в заголовках ставятся куки и редирект, если конечно память не изменяет.
 
Проще всего посмотреть в сторону curl
бибилиотека довольно проста в освоении и позволяет очень много. В том числе получить заголовки, не получая тела запроса. А $str = file_get_contents('http://ya.ru/'); не вышло, т.к. там сначала возвращается пустая страница, а в заголовках ставятся куки и редирект, если конечно память не изменяет.

Но поидее проверить можно?
Если вернет 0 значит ошибка
есмли один то продолжаем.
Просто я новичек в этих условиях циклах. Вернее Php 2 года использую но не влезал в глубь.
 
Есть такой запрос в HTTP протоколе, называется HEAD. Синтаксис запроста как у GET.

Если нужно проверить работоспособность URL, используйте его, а не GET. Он возвратит только заголовок, без тела документа.

Запрос можно послать как минимум двумя простыми способами:

1. fsockopen...
2. cURL

Примеры использования смотрите на php.net (найти легко, используя поиск на том же сайте).
 
Есть такой запрос в HTTP протоколе, называется HEAD. Синтаксис запроста как у GET.

Если нужно проверить работоспособность URL, используйте его, а не GET. Он возвратит только заголовок, без тела документа.

Запрос можно послать как минимум двумя простыми способами:

1. fsockopen...
2. cURL

Примеры использования смотрите на php.net (найти легко, используя поиск на том же сайте).


Про 1. fsockopen...
2. cURL
известно. Но придеться тогда в цикл включать еще
один запрос .

Скажите пожалуйста чем быстрее забирать со страницы кусок информации

1. fsockopen...
2. cURL
3 file_get_contents
третий забирает в строку всю страницу целиком..
Его я щас юзаю
Но если я хочу взять часть страницы. Как лучше реализовать это?
Я делаю так

Получаю страницу затем вырезаю нужное и работаю с им.
А возможно ли сразу взять только нужное не получая всю страницу?
 
Про 1. fsockopen...
2. cURL
известно. Но придеться тогда в цикл включать еще
один запрос .


Можно и одним запросом сразу получить и заголовки, и тело страницы (в обоих случаях).

Скажите пожалуйста чем быстрее забирать со страницы кусок информации

1. fsockopen...
2. cURL
3 file_get_contents
третий забирает в строку всю страницу целиком..
Его я щас юзаю
Но если я хочу взять часть страницы. Как лучше реализовать это?
Я делаю так

Получаю страницу затем вырезаю нужное и работаю с им.
А возможно ли сразу взять только нужное не получая всю страницу?

Можно только указать с какого по какой байты тебе нужно получить страницу (при условии, что сервер поддерживает докачку).
Если тебе нужно вырезать часть страницы по куссками текста, этого сделать не получится никак, т.к. сам http протокол такое не поддерживает.

Смотри лучше в сторону cURL , т.к. для работы с fsockopen нужно хорошо знать протокол http.
 
для работы с html просто не вижу перспективы качать частями - верстка-то у всех разная, с какой позиции в байтах начинается контент не угадаешь (частичная скачка именно так работает - ByteRange); плюс байтовая длина отличается в 1251 и utf.

Кинь в личку что за базу собираешь, может к нам в тему впишешься
 
PHP:
$urlgoogle="http://nulled.ws";
$t=@file_get_contents($url);
if(@!$t) { echo "Не открыто"; } else 
{ echo $t; }
Вот. Так должно быть.
 
PHP:
$urlgoogle="http://nulled.ws";
$t=@file_get_contents($url);
if(@!$t) { echo "Не открыто"; } else 
{ echo $t; }
Вот. Так должно быть.

Проще тогда уже
PHP:
$urlgoogle = "http://nulled.ws";
if( $t = @file_get_contents($url) ) {
echo $t;
}
else {
echo "Не открыто"; 
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху