php
  • curl
  • 2012-10-20 6 views 1 likes 
    1

    난 괜찮은 간단한 cURL 스크립트가 있습니다. 하지만 나쁜 URL을 감지하는 방법에 대해 궁금합니다. 그리고 "나쁜"의미는 존재하지 않는 URL을 의미합니다. 또는 내가 전화하는 서버가 일정 기간 동안 다운되었거나 실수로 잘못된 URL을 입력 한 경우입니다.PHP cURL 신호 없음

    여기에 지금까지 가지고 무엇을 (단지 예) :

    <?php 
    
    $url = 'http://someurl_or_ip.com/some_file.php'; 
    $post_fields = "type=whatever"; 
    $post_fields .= "&first=".$first; 
    $post_fields .= "&last=".$last; 
    
    
    $ch = curl_init($url); // create a new cURL resource 
    curl_setopt($ch, CURLOPT_POST,1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 1800); 
    
    // Execute the request. 
    $raw_response = curl_exec($ch); 
    $succeeded = curl_errno($ch) == 0 ? true : false; 
    
    echo $raw_response; 
    
    ?> 
    

    는 일반적으로 $의 raw_response 내가 분석하고 나는 사용자에게 데이터를 표시하는 방법을 같은 다른 것들에 사용할 수있는 무언가이다.

    나는 $ url을 존재하지 않는 파일 (그러나 유효한 도메인)로 간단히 바꿨으며 "찾을 수 없습니다 ...."라는 메시지가 나타납니다. 요청한 URL .....이 서버에서 찾을 수 없습니다 ... "

    이것이 좋은 URL이 아닌 것을 알기 위해이 Apache 서버 메시지를 구문 분석해야한다는 것을 의미합니까? 아니면 cURL이 헤더 정보를 통해이를 감지 할 수 있습니까?

    답변

    2

    당신은 찾을 수 없습니다 파일 404있을 것입니다 헤더의 HTTP 응답 코드를 볼 수 있습니다 : 서버를 사용할 수없는 경우

    $http = curl_init($url); 
    $result = curl_exec($http); 
    $http_status = curl_getinfo($http, CURLINFO_HTTP_CODE); 
    curl_close($http); 
    echo $http_status; 
    

    , 당신은 분명히로부터 응답을받지 않습니다 서버가 없으므로 HTTP 응답 코드가 없습니다. 이 경우 curl_exec()은 false와 함께 반환됩니다.이 경우 오류를 처리 할 수 ​​있습니다.

    if(curl_exec($ch) !== false) { 
        // Success 
    } else { 
        // Error 
        $error_str = curl_error($ch); 
        $error_num = curl_errno($ch); 
    } 
    
    +0

    우수 설명. – coffeemonitor

    관련 문제