2014-03-04 5 views
-2

모바일 버전의 PHP 웹 사이트가 있으며 Google 광고가 표시됩니다. 내 클라이언트에서 머리글과 바닥 글에 대한 Google 코드를 각각 받았으며 항상 표시하지는 않습니다. 개인 정보와 일부 매개 변수가Google 광고 오류

fopen(http://pagead2.googlesyndication.com/pagead/ads?...): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found 

URL에 물음표 후, 그래서 내가 대신 그들 ... 쓰기로했다 :이처럼 보이는 자동 오류 보고서에 경고를 많이받을 수 있습니다. 나는 고객에게 코드를 다시 생성 해달라고 요청했다. 헤더와 푸터에 대한 새로운 코드를 붙여 넣었다. 그러나 오류가 사라 졌다고 생각할 때 우리는 이것을 하루와 16 시간 후에 호출하기로했다. 4352 오류 보고서를 받았으며, 그 중 95 %가 Google 광고와 동일합니다. 오류는 동일합니다. 즉, 스트림을 열지 못했습니다. 왜 우리는 때때로 광고를 보는지, 왜 다른 광고가 게재되지 않는지 궁금합니다. 질문 : 당신이이 오류를 가지고있을 때, 그들을 없애고 광고를 보여줄 수있는 단계는 무엇입니까? (당연히 광고를 꺼낼 수는 있지만 내 고객은 불행해질 것입니다.)

EDIT : 편집 : 이 부분은 코드에서 가져온 것입니다 (기밀 정보를 빼내어 '비밀'로 변경). 그 질문이 이제는 더 이해되기를 바랍니다. double bind

$GLOBALS['google']['client']='secret'; 
$GLOBALS['google']['https']=read_global('HTTPS'); 
$GLOBALS['google']['ip']=read_global('REMOTE_ADDR'); 
$GLOBALS['google']['markup']='xhtml'; 
$GLOBALS['google']['output']='xhtml'; 
$GLOBALS['google']['ref']=read_global('HTTP_REFERER'); 
$GLOBALS['google']['slotname']='secret'; 
$GLOBALS['google']['url']=read_global('HTTP_HOST') . read_global('REQUEST_URI'); 
$GLOBALS['google']['useragent']=read_global('HTTP_USER_AGENT'); 
+2

내 질문에 동의하지 않을 때 나는 아래쪽 투표의 이유를 읽고 싶습니다. 그래서 나는 내 질문을 기대에 맞게 다시 말할 수 있습니다. 아래 표는 질문에 무엇이 잘못되었는지 설명하는 의견과 함께 사용하면 도움이 될 수 있습니다. 이것이 주제를 벗어난 것이라고 생각한다면, 이것은 프로그래밍 문제라는 것을 확신 할 수 있습니다. 이것은 아직 알려지지 않은 무언가에 의해 야기 된 버그입니다. 나는이 문제를 해결하기위한 정보를 얻으려고한다. 감사. –

+0

광고를로드하는 데 어떤 시스템을 사용하고 있는지 이해할 수 없습니다. include()로 추가하기가 쉽지 않습니까? –

+0

@SakhalTurkaystan, 질문 주셔서 감사합니다. 나는 두 개의 파일, 머리말과 꼬리말을 가지고 있으며 그들이 포함될 필요가있는 곳에 포함되어있다. 정확한 오류는 게시하지 않았습니다. 프로젝트 및 내 클라이언트의 애드 센스 사용자 (기밀 정보)에 대한 정보를 모두 제공하므로 오류의 특성을 포함 시켰지만 귀하의 요점을 알 수 있습니다. 나는 당신에게 더 많은 정보를 제공하기 위해이 질문을 편집 할 것이지만 나는 구글 애드 센스의 전문가가 아니기 때문에 어떤 시스템이 사용되는지 모른다. –

답변

1

, 이드 가능한 한 해당 서버를 테스트하려고 : 은 보통처럼 보인다.

ISP, 브라우저, 방화벽 및 프록시가 포함 된 엔드 포인트에서 문제를 제거하려고합니다. 그 후에 다른 엔드 포인트를 테스트하려고합니다.

먼저 오류 로그의 패턴을 찾아 짧은 시간에 여러 연결로 인해 발생하는지, 특정 위치의 요청, 이전 브라우저, 특정 브라우저 버전 등을 찾으십시오.

짧은 시간

이에

너무 많은 연결이 Google 서버에 문제가되지 않습니다, 그러나 그것은 이상한 상황을 나타낼 수 있으며, 일부 요청은 정상 또는 완전한 HTTP 응답을 받고되지 않을 수 있습니다. 당신은 이것을 실제로 시험 할 수는 없지만 그것을 탐지하고 반응 할 수 있습니다.

오래된 브라우저 - 브라우저

의 특정 버전의 브라우저에 버그가 우연에 의해 잘못된 하나 존재하지 않는 자원을 가리 될 일이 불완전한 요청을 보내는 될 수 있습니다. 브라우저에 캐시 결함이있을 수 있으며 리소스를 확인하지 않고도 404 응답을 보냅니다. 브라우저 문제, 캐싱 및 쿠키를 삭제하는 방식으로 적어도 두 개의 서로 다른 브라우저와 개인 세션을 사용하여 테스트합니다. JS의 경우에만 작동합니다.

요청이 위치 연결에 문제가있을 수있는 특정 위치

, 또는 결함 ISP, 또는 지나치게 캐싱 서비스, 또는 문제가 프록시에서 유래. 이를 테스트 할 수는 없지만 예를 들어 광고를 보내지 않은 경우와 같이 반응을 감지하고 이에 대응할 수 있습니다.

방화벽 - 프록시는

는 고객의 사이트 이름/금지와 비슷 하나를 차단? 그렇다면 서버에 오타가 발생하여 오타가 발생하면 요청이 전달 될 때마다 영향을받을 수 있습니다. 금지 사이트 목록을 확인하십시오. 클라이언트 서버

과부하

고객의 사이트가 남용 될 수 공유 호스팅 또는 호스팅에서 호스팅? 그렇다면 예를 들어 명령의 실행 시간 제한과 관련된 이상한 동작이 발생하거나 너무 많은 연결을 유지하고 일부 연결을 끊어서 응답을 기다리는 연결이 남겨지기 때문에 이상한 동작이 발생할 수 있습니다. 이것은 테스트하기가 어렵지만 서버로드를 검사하고 역방향 IP 검사를 수행하여 동일한 IP를 공유하는 많은 클라이언트가 있는지 확인하고 cURL 요청을 수행하고 평균 시간을 확인할 수 있습니다.

시간 제한 -

은 전체 연결 과정에 다른 시간 제한이 있습니다 리디렉션. 적어도 사용자 및 클라이언트의 서버로 시스템에 문제가 있는지 확인할 수 있습니다. cURL 세션 (매번 새로운 연결과 연결 재사용)을 사용하여 PHP 파일을 만들고, 여러 번 실행하고, 응답 시간과 리디렉션을 확인하십시오. 서비스에서 적절한 응답을 항상 받았는지, 너무 오래 걸리는지, 리디렉션이 있는지, 매번 또는 몇 번 리디렉션이 있는지, 다른 시간을 테스트하는지 확인하십시오. 다른 크기를 사용하는 반면 (라요스 아르 밧에서)

편집

광고 크기가 일치하지

이 코드는 주어진 크기에 적용 할 수 있습니다. 문제에 관해 고객으로부터 정보를 얻으려고 시도해야합니다.

불일치

이 위의 더 일반적인 경우이지만, 광고 크기 불일치가 자주 발생하고 실제 문제가 될 수 있기 때문에 내가 독립적으로 광고 크기의 문제를 설명 설정. 또한 다른 중요한 설정이 일치하는지 여부를 확인해야합니다. 문제가 발생하면 무언가를 잘못 처리해야합니다.제 생각에는 편집

END, 이것은 당신에게 당신이 찾고있는 대답을해야하고, 그렇지 않은 경우, 당신은 다른 사람 또는 사용하기에 유용 할 수 있습니다이 문제에 대한 자세한 내용을 제공 할 수 있습니다 Google에서 요청 /보고 할 결과

+0

귀하의 답변은 훌륭하고 거의 완벽합니다. 나는 원래의 대답에서 생략 된 두 개의 다른 점을 추가했다. 문제는 아직 해결되지, 그러나 나는 해결책을 요구하지 않은, 난 단지 문제의이 종류를 해결하기 위해 최적의 사고 과정과 모범 사례를 요구 한 당신의 대답은 올바른 방향으로 나를 지적했다. 그러므로 나는 당신의 대답을 포기하고 받아 들여 100 포인트의 현상금이 당신의 사용자에게 다가 가기를 희망합니다. –

+0

@LajosArpad : 아니, 그것은 나를 도달하지,하지만 당신은 문제를 해결, 또는 적어도 당신이 그것을 할 수있는 방법에 있는지 아직 기뻐 않았다. – PatomaS

+0

아, 쏘지, 나는이 질문에 대해 100 점을 희생했지만 당신에게 도달하지 못했습니다. –

0
fopen was part of the google code and we are not allowed to modify that, so I have to leave it at that even if it is strange 

. 그것을 제거. 작동하지 않으면 작동하지 않을 수 있습니다.

나는 nearly 7 (!) years old post 당신의 fopen 전화가 "그들의 목적"에서 작동하지 않는다고 불평했습니다.

+0

답변이 아닙니다. –

0

몇 번하면 fopen 경우 당신과 몇 번에 대한 작품은, 이 같은 코드에서 조절 조치를 사용할 수 있습니다하지 않습니다

 <?php 

      // Turn off all error reporting 
      error_reporting(0); 

      $url = 'http://pagead2.googlesyndication.com/pagead/ads'; //put your real url here 
      $fp = fopen($url, 'r'); 

      // The variable $http_response_header will automagically be generated (array) 
      /* you may explore the rsponse by un-commenting the following 
      foreach($http_response_header as $key=>$value){ 
       echo $key.'='.$value.'<br>'; 
      } 
      */ 

      $response_code = @explode(' ', $http_response_header[0]); 
      $response_code = (int)$response_code[1]; 

      if($return_code==200){ 
       // show the ad part 
       // echo 'OK'; 
      } else { 
       // whatever 
       // echo 'OH.BOY'; 
      } 

     ?> 

또 다른 방법이 라운드 이동합니다을 사용하는 것입니다 대신 자바 스크립트 애드 센스 코드. 고객이 자바 스크립트 부분을 머리글/바닥 글 등에 포함시킬 수 있습니다. ' 원격 서버에있는 언급 오류 이후

<script type="text/javascript"> 
    <!-- google_ad_client = "pub-UNIQUE_NUMBER"; 
    /* 300x250, created dd/mm/yy */ 
    google_ad_slot = "11111111"; 
    google_ad_width = 300; 
    google_ad_height = 250; 
    //--> 
    </script> 
    <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 
    </script> 
+0

Javascript이 경우 옵션이 아니므로이 코드는 서버 측에 있어야합니다. 나중에 fopen 함수를 호출 할 때 문제가 발생합니다. 문제를 숨길 수는 있지만 문제없이 광고를 표시하고 싶습니다. –

+0

fopen이 코드 200을 반환하지 않으면 아무 것도 표시 할 수 없습니다. 위의 PHP 코드를 사용하여 fopen 호출에서 가져온 코드를 확인하십시오. –