[英]Errors with google ads
我有一個帶有移動版本的 PHP 網站,並且在那里顯示谷歌廣告。 我分別從我的客戶那里收到了 header 和頁腳的谷歌代碼,但它們並不總是顯示。 我在自動錯誤報告中收到很多警告,如下所示:
fopen(http://pagead2.googlesyndication.com/pagead/ads?...): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
URL中的問號后面有一些帶有私人信息的參數,所以我決定寫...而不是它們。 我已經要求我的客戶重新生成代碼,他已經這樣做了,我已經粘貼了 header 的新代碼和頁腳,但是,當我們認為錯誤消失時,我們決定在 16 小時后調用它已收到4352個錯誤報告,其中95%是google ads,錯誤相同,即:未能打開stream。 我想知道為什么我們有時會看到廣告,為什么在其他情況下沒有出現。 問題:當你們遇到此錯誤時,有哪些步驟可以消除它們並展示廣告? (當然我可以去掉廣告,但是我的客戶會不高興,哈哈)
編輯:這是代碼的一部分(機密信息已從中取出並替換為“秘密”)。 我希望這個問題現在更有意義。
$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');
由於您提到的錯誤位於遠程服務器上,因此我嘗試盡可能多地測試該服務器。
我會嘗試放棄我的端點的問題,其中包括我的 ISP、我的瀏覽器、防火牆和代理。 之后,我會嘗試測試另一個端點。
首先,嘗試在錯誤日志上查找模式,嘗試查找是否發生這種情況,因為短時間內連接很多,來自特定位置的請求,舊瀏覽器,特定版本的瀏覽器等。
短時間內連接過多
這對於 Google 服務器來說應該不是問題,但它可能表示一種奇怪的情況,並且某些請求可能無法獲得正常或完整的 HTTP 響應。 您無法對此進行真正的測試,但您可以嘗試檢測它並做出反應。
舊瀏覽器 - 特定版本的瀏覽器
可能是瀏覽器上的一個錯誤正在發送一個不完整的請求,碰巧這是一個無效的請求,並且指向一個不存在的資源。 可能是瀏覽器有緩存缺陷,甚至沒有檢查資源就發送 404 響應。 您通過使用至少兩個不同的瀏覽器和私有 session 來測試這一點,這樣您就可以丟棄瀏覽器問題、緩存和 cookies。 (這僅適用於 JS)。
來自特定位置的請求
該位置可能有連接問題,或者有缺陷的 ISP,或者過分熱心的緩存服務,或者有問題的代理。 您無法對此進行測試,但您可以嘗試檢測它並做出反應,例如,不向這些請求發送廣告。
防火牆 - 代理
您客戶的網站名稱是否與被禁止/屏蔽的網站名稱相似? 如果是這樣,並且如果碰巧在服務器上發生了拼寫錯誤,那么每次請求通過時您都可能會受到影響。 檢查被禁止的網站列表。
客戶端服務器過載
您客戶的網站是托管在共享主機上還是可能被過度使用的主機上? 如果是這樣,可能會發生奇怪的行為,例如與命令的執行時間限制有關,或者因為它建立了太多的連接,有些必須被丟棄,留下一些連接只是掛起等待應答。 這很難測試,但您可以檢查服務器負載,執行反向 IP 檢查是否有許多客戶端共享相同的 IP,執行 cURL 請求並檢查平均時間。
時間限制 - 重定向
整個連接過程有不同的時間限制。 您可以檢查是否存在問題,至少從您的系統作為用戶和從您的客戶端的服務器。 用cURL session創建一個PHP文件,多次執行,檢查響應時間和重定向。 檢查您是否總是從服務中獲得正確的響應,是否花費太長時間,是否有重定向,是否每次或只是幾次都有重定向,測試不同的時間。
編輯(來自 Lajos Árpád)
廣告尺寸不匹配
該代碼可能適用於給定的尺寸,而您可能使用不同的尺寸。 您應該嘗試從您的客戶那里獲取有關該問題的信息。
設置不匹配
這是上述情況更普遍的情況,但我單獨描述了廣告尺寸的問題,因為廣告尺寸不匹配經常發生,這可能是真正的問題。 此外,您應該檢查其他重要設置是否匹配,是否存在處理不當的問題。
編輯結束
在我看來,這應該會給你你正在尋找的答案,如果沒有,你可以提供關於這個問題的更多細節,這可能對其他人有用,或者使用結果在谷歌上提問/報告。
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
那是雙重綁定。 擺脫它。 如果它不工作,你就不能讓它工作。
我發現這篇已有近 7(!)年歷史的帖子抱怨您的 fopen 呼叫無法“最終”工作。
如果有時 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';
}
?>
go 回合的另一種方法是改用 javascript AdSense 代碼。 您的客戶可能會為您提供 javascript 部件以包含在頁眉/頁腳等中。 它通常看起來像:
<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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.