Мне нужно проверить, существует ли конкретный файл на удаленном сервере. Использование is_file()
и file_exists()
не работает. Любые идеи, как это сделать быстро и легко?
вы должны использовать CURL
function is_url_exist($url){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_NOBODY, true); curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if($code == 200){ $status = true; }else{ $status = false; } curl_close($ch); return $status; }
Вам не нужно CURL для этого … Слишком много накладных расходов, просто хочу проверить, существует ли файл или нет …
Использовать PHP get_header .
$headers=get_headers($url);
Затем проверьте, есть ли $ result [0] 200 OK (это означает, что файл есть)
Функция проверки работоспособности URL-адреса может быть такой:
function UR_exists($url){ $headers=get_headers($url); return stripos($headers[0],"200 OK")?true:false; } /* You can test a URL like this (sample) */ if(UR_exists("http://www.amazingjokes.com/")) echo "This page exists"; else echo "This page does not exist";
Я только что нашел это решение:
if(@getimagesize($remoteImageURL)){ //image exists! }else{ //image does not exist. }
Источник: http://www.dreamincode.net/forums/topic/11197-checking-if-file-exists-on-remote-server/
Привет, согласно нашему тесту между двумя разными серверами, результаты выглядят следующим образом:
с использованием curl для проверки 10 .png файлов (каждый около 5 мб) был в среднем 5,7 секунд. используя проверку заголовка для того же самого дела, потребовалось в среднем 7,8 секунды!
Таким образом, в нашем тестовом скручивании было намного быстрее, если вам нужно проверить большие файлы!
наша функция завитка:
function remote_file_exists($url){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_NOBODY, true); curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if( $httpCode == 200 ){return true;} return false; }
вот наш образец проверки заголовка:
function UR_exists($url){ $headers=get_headers($url); return stripos($headers[0],"200 OK")?true:false; }
Сделайте запрос с завихрением и посмотрите, возвращает ли он код статуса 404. Выполняйте запрос с использованием метода запроса HEAD, чтобы он возвращал заголовки без тела.