2010-02-18 29 views
6

Cách kiểm tra xem tệp có tồn tại trên Máy chủ bên ngoài không? Tôi có một url "http://logs.com/logs/log.csv" và tôi có một tập lệnh trên máy chủ khác để kiểm tra xem tệp này có tồn tại hay không. Tôi cố gắngCách kiểm tra xem tệp có tồn tại trên máy chủ bên ngoài

$handle = fopen("http://logs.com/logs/log.csv","r"); 
if($handle === true){ 
return true; 
}else{ 
return false; 
} 

if(file_exists("http://logs.com/logs/log.csv")){ 
return true; 
}else{ 
return false; 
} 

Những methos chỉ không làm việc

+1

thử 'nếu ($ handle)'. '$ handle' sẽ không phải là một boolean, do đó, không có điểm so sánh nó với một. – Skilldrick

+0

Câu hỏi tương tự: http://stackoverflow.com/questions/2280394 – Gordon

Trả lời

1
<?php 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 4file dir); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 

    $data = curl_exec($ch); 
    curl_close($ch); 

    preg_match_all("/HTTP\/1\.[1|0]\s(\d{3})/",$data,$matches); //check for HTTP headers 

    $code = end($matches[1]); 

    if(!$data) 
    { 
     echo "file could not be found"; 
    } 
    else 
    { 
     if($code == 200) 
     { 
      echo "file found"; 
     } 
     elseif($code == 404) 
     { 
      echo "file not found"; 
     } 
    } 
    ?> 
+0

là có một số cách để diretcly lấy dữ liệu cho các URL mà chỉ có thể được gọi một lần khi kiểm tra xem chúng hoạt động? – My1

3

này nên làm việc:

$contents = file_get_contents("http://logs.com/logs/log.csv"); 

if (strlen($contents)) 
{ 
    return true; // yes it does exist 
} 
else 
{ 
    return false; // oops 
} 

Lưu ý: này giả định tập tin là không có sản phẩm nào

+1

Điều gì xảy ra nếu tệp tồn tại nhưng trống? – Skilldrick

+0

@ Skilldrick: bạn đúng, câu trả lời đã sửa đổi. – Sarfraz

+0

Điều này sẽ rất thú vị nếu tệp là khá lớn – eithed

8
function checkExternalFile($url) 
{ 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_exec($ch); 
    $retCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch); 

    return $retCode; 
} 

$fileExists = checkExternalFile("http://example.com/your/url/here.jpg"); 

// $fileExists > 400 = not found 
// $fileExists = 200 = found. 
Các vấn đề liên quan