Как проверить удалённый файл на существование?
P.S.: С Новым Годом Всех! :))
P.P.S.: Поиск юзал, гугл не рулит :(
2. Попытай счастья в районе функций fopen() get_file_contents() и им подобным.
Цитата: Progr\.
P.S.: С Новым Годом Всех! :))
P.P.S.: Поиск юзал, гугл не рулит :(
И тебя с НГ.
плохо юзал, гугл рулит.
Я делаю это так:
Код:
function getFE($site){
if (@fopen($site, "r")) {
$res = 1; // существует
}
else {
$res = 0; // не существует; 404
}
return $res;
}
if (@fopen($site, "r")) {
$res = 1; // существует
}
else {
$res = 0; // не существует; 404
}
return $res;
}
Но fopen, вроде, тормознутая процедура, нельзя ли какой-нибудь более быстрой процедурой это сделать?
file_get_contents не быстрее её? Помогите пожалуйста, а то скорость ОЧЕНЬ значима в скрипте, который я сейчас пишу.
Начет скорости не скажу, но скажу следуйщее. Если будеш юзать это на каком-то хостинге, не на своем сервере, то это может не работать. Открытие файлов с удаленных серверов часто запрещенно.
Lone Wolf, да не, с этим проблем нет - у меня на своем хостинге всё включено, уже проверил. Тут со скоростью проблема, а то по моим подсчётам мне придётся выполнять этот скрипт в течении 5 часов, чтоб сделать то, что хочу... Вот и думаю, как бы побыстреее.
Отправить HEAD запрос, и посмотреть на возвращаемые заголовки.
Пожалуйста, помогите. Очень важен этот скрипт.
Цитата: Progr\.
Уважаемый ReDrum, растолкуйте, пожалуйста, как это сделать. Способ самы быстрый будет (сам понимаю), но вообще не представляю как это сделать.
Пожалуйста, помогите. Очень важен этот скрипт.
Пожалуйста, помогите. Очень важен этот скрипт.
посмотри в сторону CURL - всё уже написано :)
Код:
// инициализация сеанса
$ch = curl_init();
// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, "http://www.yandex.ru/");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
// загрузка страницы и выдача её браузеру
curl_exec($ch);
// завершение сеанса и освобождение ресурсов
curl_close($ch);
$ch = curl_init();
// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, "http://www.yandex.ru/");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
// загрузка страницы и выдача её браузеру
curl_exec($ch);
// завершение сеанса и освобождение ресурсов
curl_close($ch);
Выводит:
Цитата:
HTTP/1.1 200 OK
Date: Thu, 03 Jan 2008 14:12:25 GMT
Server: Apache/1.3.29 (Unix) mod_perl/1.29 mod_deflate/1.0.21 rus/PL30.19
Set-Cookie: yandexuid=2137121159669545; path=/; domain=.yandex.ru; expires=Friday, 31-Dec-10 23:59:59 GMT
Last-Modified: Thu Jan 3 14:12:25 2008 GMT
Cache-Control: max-age=300, private, proxy-revalidate
Expires: Thu Jan 3 14:17:25 2008 GMT
Content-Length: 26129
Connection: close
Content-Type: text/html; charset=windows-1251
Но вот как теперь забрать 1ю строку? Не писать же в файл, да не считывать с него потом?.. Помогите, пожалуйста.
explode можно попробывать прикрутить.
Ну тут просто - регулярку напиши, или
переприсваиванием не получается :(
Объясните, пожалуйста, как выташашить первую строку?
Код:
...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$data = curl_exec($ch);
curl_close ($ch);
$content = explode("\n",$data);
echo $content[0];
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$data = curl_exec($ch);
curl_close ($ch);
$content = explode("\n",$data);
echo $content[0];
Код:
function getHttpResponseCode($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$status = array();
$response = curl_exec($ch);
preg_match('/HTTP\/.* ([0-9]+) .*/', $response, $status);
curl_close($ch);
return $status[1];
}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$status = array();
$response = curl_exec($ch);
preg_match('/HTTP\/.* ([0-9]+) .*/', $response, $status);
curl_close($ch);
return $status[1];
}
только она некорректно работает, если домен не существует. Ладно, там можно отловить через curl_errno, потом проifить. Но какие ошибки из этих могут выйти, если я буду вызывать curl_errno?
а мы тут придумываем :)
А она быстрее курла?