2011-08-26 12 views
0

내가 이런 PHP 스크립트가 : 때때로 일어나는 무엇curl, file_get_contents를 사용하는 방법?

<?php 
$likes = 'https://graph.facebook.com/google'; 
$fb = file_get_contents($likes); 
$fb_array=json_decode($fb,true); 
$all_likes = $fb_array['likes']; 
$english_format = number_format($all_likes); 
?> 

URL은 실패와 나는 이런 식으로 뭔가를 얻을 :

Warning: file_get_contents(https://graph.facebook.com/google) [function.file-get-contents]: failed to open stream: HTTP request failed! in /var/www/html/google/index.php on line 774 

위한 방법이 있는지 궁금 해서요 코드가 정상적으로 작동하지 않는 이유는 전체 웹 사이트를 다운시키고 있기 때문입니다.

PHP 또는 컬 대안이 오류를 처리하는 경우 나는 생각했다.

어떤 아이디어가 있습니까?

감사

편집 : 나는 그래서이 수 :

<?php 
$likes = 'https://graph.facebook.com/google'; 
if([email protected]_get_contents($likes)){ 
    $english_format = 123; 
} else { 
$fb = file_get_contents($likes); 
$fb_array=json_decode($fb,true); 
$all_likes = $fb_array['likes']; 
$english_format = number_format($all_likes); 
    } 
?> 

하지만 여전히 내 웹 사이트

+0

오류 방지 기능을 사용하는 이유는 무엇입니까? – NullUserException

답변

1
당신은 stream context 사용하여 file_get_contents으로 HTTP 오류를 처리 할 수 ​​

이 느린 : 또한

$context = stream_context_create(array(
    'http' => array(
     'ignore_errors' => true, 
    ), 
)); 

$fb = file_get_contents('http://www.google.com'); 
$code = substr($http_response_header[0], strpos($http_response_header[0], ' ')+1); 

if ($code != 200) { 
    // there might be a problem 
} 

display_errorsOff해야한다 프로덕션 환경에서.

-1

당신은 설정 Error Handler 캐치 (공손 관리) 할 수있는 오류 속도가 느려집니다.

또는 @suppress 오류가 발생하면 계속하기 전에 $fb이 유효한지 확인하십시오.

+0

-1'@'의 사용을 보증하기 위해 – NullUserException

+1

@NullUserException : 실행 가능한 옵션이므로 많은 것을 보증하지 않습니다. 그럼에도 불구하고 최선의 선택이 아니기 때문에 옵션이 아니라는 것을 의미하지는 않습니다. PHP로 작성되었으므로 사용할 수 있습니다. 문제의 근본 원인을 찾거나 개인적으로 오류 처리기를 사용합니다. –

+0

@Brad Christie, +1. 나는 사고 방식에 동의한다. 나쁜 옵션은 여전히 ​​옵션입니다. :). 간단한 바보 (키스)로 유지 – froditus

1

코드 실행 속도가 느리기 때문에 @가 마음에 들지 않습니다. 그러나 모든 확인을 경우 두 file_get_contents을하기 때문에 아래 코드를 사용할 수

$likes = 'https://graph.facebook.com/google'; 
$result = @file_get_contents($likes); 
if(empty($result)){ 
    $english_format = 123; 
} else { 
    $fb_array=json_decode($result,true); 
    $all_likes = $fb_array['likes']; 
    $english_format = number_format($all_likes); 
} 
+0

"코드 실행 속도가 느리기 때문에 @가 마음에 들지 않습니다." '@'와 함께 더 큰 문제가 있습니다. – NullUserException

+0

이 문제에 대해 알고 있지만 코드의 원인 중 하나는 두 개의 file_get_contents를 호출하는 것입니다. –

+0

시도해 보았습니다. 웹 사이트가 느려졌습니다. – Patrioticcow