Открытие страницы скриптом для индексации
Warning: fopen(http://www......../index.html) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 412 Precondition Failed in /home/........... line 14
Хостер сказал, что необходимо давать правильные заголовки. Я с этим согласен. Применение =Header("User-agent: Mozilla 4.1");= результата не дало. Кто может, помогите. Какие заголовки надо выдавать в запросе, чтобы можно было открыть URL функцией fopen() [язык PHP]? Спасибо.
Цитата:
Originally posted by ASL
Такая проблема: написанный мною скрипт индексации страниц моего сайта (последовательно обходит все ссылки в пределах одного домена, начиная с индекса) вдруг начал выдавать такую ошибку:
Warning: fopen(http://www......../index.html) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 412 Precondition Failed in /home/........... line 14
Хостер сказал, что необходимо давать правильные заголовки. Я с этим согласен. Применение =Header("User-agent: Mozilla 4.1");= результата не дало. Кто может, помогите. Какие заголовки надо выдавать в запросе, чтобы можно было открыть URL функцией fopen() [язык PHP]? Спасибо.
Такая проблема: написанный мною скрипт индексации страниц моего сайта (последовательно обходит все ссылки в пределах одного домена, начиная с индекса) вдруг начал выдавать такую ошибку:
Warning: fopen(http://www......../index.html) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 412 Precondition Failed in /home/........... line 14
Хостер сказал, что необходимо давать правильные заголовки. Я с этим согласен. Применение =Header("User-agent: Mozilla 4.1");= результата не дало. Кто может, помогите. Какие заголовки надо выдавать в запросе, чтобы можно было открыть URL функцией fopen() [язык PHP]? Спасибо.
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: ru
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322)
Host: localhost
Функция fopen() в данном случае не работает. Пришлось использовать сокет и затем запрос:
<?
$host="http://localhost";
$port=":80";
$path="/site/index.html";
$abs_url="$host$port$path";
$query="GET $abs_url HTTP/1.1\r\n".
"User-Agent: Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322)\r\n".
"Host: $host$port\r\n".
"Referer: $host$port\r\n".
"Content-Type: application/x-www-form-urlencoded \r\n".
"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n".
"Accept-Language: ru\r\n".
"UA-CPU: x86\r\n".
"\r\n";
#открываем соединение с сервером
$fp=fsockopen("127.0.0.1",80);
fputs($fp,$query);
if ($fp)
{
$content='';
while (!feof($fp))
{
$content=$content.fread($fp, 10000);
}
echo $content;
fclose($fp);
}
else echo "Ошибка сокета";
?>
Заголовки применил все, что нашел в книге.
Но выполняется дольше (весьма заметно), чем fopen(). Может, кто-то знает, как ускорить подобный процесс?
Делай через curl
Цитата:
Originally posted by ASL
Отвечу сам себе.
Функция fopen() в данном случае не работает. Пришлось использовать сокет и затем запрос:
Отвечу сам себе.
Функция fopen() в данном случае не работает. Пришлось использовать сокет и затем запрос:
И ещё, fopen() тоже работает ;) неправильно что-то делал, если не получилось.
Цитата:
Делай через curl
Дай пример, если не трудно, использования cURL в данном случае (желательно, проверенный на практике, ведь теория от практики отличается :-) )