2009-06-16 5 views
0

트위터가 오늘 다운되면서 API가 다운되었을 때 최선의 호출을 처리하는 방법을 생각하고있었습니다. CURL을 사용하여 API를 호출하는 경우 스크립트를 신속하게 실패하게하고 응용 프로그램의 속도를 저하시키지 않도록 오류를 처리하는 방법은 무엇입니까? 사용 curl_setopt정상적으로 다운 된 API를 처리하는 방법

curl_setopt($yourCurlHandle, CURLOPT_CONNECTTIMEOUT, '1'); // 1 second 

당신이 말림 사용하는 경우

답변

2

아마도 트위터가 위 또는 아래인지 여부와 상관없이 일종의 캐시를 사용하십시오. 데이터베이스 또는 서버 측 파일에서 api의 잘못된 응답을 로깅합니다. 행에 무효 응답이 2/3/다른 양을 얻으면 x 시간 동안 api에 대한 모든 요청을 사용 중지합니다.

x 시간이 지나면 요청을 시도한 다음 요청이 계속되면 x 분 동안 다시 사용 중지하십시오.

서버가 CRON 작업을 실행할 수 있으면 몇 분마다 유효한 응답을 확인하는 스크립트를 만드는 것이 좋습니다. 다운 된 것으로 확인되면 백업 할 때까지 요청을 비활성화하십시오. 적어도이 경우 서버는 테스트를 수행하고 사용자는 기니피그 일 필요는 없습니다.

2

> = 7.16.2 및 PHP는> = 5.2.3 CURLOPT_CONNECTTIMEOUT_MS

+0

유일한 문제는 느린 연결과 다운 된 API 간의 차이점을 알 수 없다는 것입니다. –

+0

시간이 초과되면 true를 반환합니까? – Tim

+0

치명적인 저속 연결은 다운 된 API만큼 나쁜 것입니다. 어쩌면 3+ 초는 관대 한 시간 초과입니다. – Kekoa

2

사용 curl_getinfo cURL을 응답 코드 또는 콘텐츠 길이를 얻을 수 및 그걸 확인해 봐.

$HttpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
+0

실제로 반환 된 코드 및 사이트 상태를 확인하기위한 chron 작업 실행에 대한 다른 대답을 제공합니다. – Tim