本文英文原文地址:http://www.openxtips.com/2009/06/tip-14-troubleshooting-banner-delivery/
对于新的OpenX用户来说,对于广告投放出现的各种问题会很头大。即使是对于有经验的OpenX用户,也时不时会在广告投放上遇到一些困难。
您也知道,OpenX广告没有投放出来的原因有很多,很难有一个简单的方案能解决这个问题。幸运的是确认问题在哪的过程不是太难,下面我们一起来看下如何找到广告投放问题的Check List:
#1.0: 是否有广告在投放?
OpenX服务器是否可以投放广告(即使这些广告不是您想要的),或者说完全没有广告在投放?如果有广告可以投放,前往#2.0,如果确认没有广告在投放,前往#1.1。
#1.1: 您正在使用的是直接选择么?
如果您正尝试使用OpenX的直接选择方式投放广告,而非使用广告代码,那么请先尝试通过广告位投放广告。直接选择投放方式是一个非常复杂的过程,主要是针对OpenX的高级用户。如果您的广告不能正常投放,有可能只是因为您还不是一个高级的用户。所以,请先尝试使用广告代码进行投放。
#1.2: 您试过重新生成广告代码么?
有时候,广告不能投放的原因是一个简单的复制粘贴错误。尝试重新生成广告代码,并且复制粘贴到您的网站,看看有没有用。
如果还是不行,尝试将广告代码放到一个简单的无内容HTML页面。有可能是您页面的内容和广告代码之间有冲突。将广告代码放到一个简单的HTML页面可以保证不是页面内容与代码冲突的问题。
#1.3: 您尝试过使用别的广告代码么?
有可能是您选择的广告代码本身有问题,或者只是因为您所选择的广告代码不适合投放对应的广告类型,举个例子来说,图片广告代码只能显示图片广告,而HTML广告是不能在此类图片广告代码上线时的。
尝试别的广告代码类型,看看是不是有用。一般来说,Javascript代码适用于任何广告类型。
#1.4: 您确认广告位上有对应展示概率高于0%的有效广告么?
检查广告位显示概率界面,确认广告位有对应展示概率高于0%的有效广告。如果没有这种广告,您需要链接一些有效广告到广告位上,就可以看到广告了。
另外,如果您使用广告位链来投放另外一个广告位上的广告,尝试重新生成另外的广告位的广告代码并直接使用,看看是否有用。可能您的广告位链并没有设置好。
#1.5: 确认广告位上有可用的广告投放么?
根据实际经验,广告位上不显示广告,实际上是由于广告已经投放完了。举例来说,广告位上连接的所有广告都设置了一天显示一次,然后所有的广告都被显示过,于是乎对应的广告位就没有广告可以显示了。
由于有很多可能的投放限制或者频次限制导致广告无法显示,确认在广告位上有对应至少一个肯定可以投放的广告,来确认这个广告是否可以显示,而其他广告都不行。
#1.6: 您运行了广告屏蔽工具么?
广告屏蔽工具(类似Adblock Plus)会阻止广告展现。如果您正在运行此类工具,尝试禁止功能看看是不是可以看到广告。
#1.7: 确认广告代码服务器调用问题
如果上面所有步骤都试过后都没有用,那很有可能是广告代码在服务器调用的时候出了问题。为了找到问题在哪,您需要一步步的查看服务器调用过程。
举一个简单的例子,用一个简单的HTML页面,页面里没有任何内容,只有一个简单的OpenX Javascript代码,运行这个页面:假设OpenX服务器运行在”www.example.com”域名下。
<html>
<head>
<title>Text OpenX Page</title>
</head>
<body>
<!--/* OpenX Javascript Tag v2.8.0 */-->
<script type='text/javascript'><!--//<![CDATA[
var m3_u = (location.protocol=='https:'?'https://www.example.com/openx/www/delivery/ajs.php':'http://www.example.com/openx/www/delivery/ajs.php');
var m3_r = Math.floor(Math.random()*99999999999);
if (!document.MAX_used) document.MAX_used = ',';
document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
document.write ("?zoneid=1");
document.write ('&cb=' + m3_r);
if (document.MAX_used != ',') document.write ("&exclude=" + document.MAX_used);
document.write (document.charset ? '&charset='+document.charset : (document.characterSet ? '&charset='+document.characterSet : ''));
document.write ("&loc=" + escape(window.location));
if (document.referrer) document.write ("&referer=" + escape(document.referrer));
if (document.context) document.write ("&context=" + escape(document.context));
if (document.mmm_fo) document.write ("&mmm_fo=1");
document.write ("'><\/scr"+"ipt>");
//]]>--></script>
</body>
</html>
当用户浏览器运行这个页面代码时,会从您的OpenX服务器上调用多个不同的URL。您可以通过工具(类似IE下的iehttpheaders或者Firefox下的LiveHTTPHeaders)看到这些URL调用。下面是当页面运行时被调用的URL:
- http://www.example.com/openx/www/delivery/ajs.php?zoneid=1&cb=15028591281&charset=UTF-8&loc=http%3A//www.example.com/test.html
- http://www.example.com/openx/www/delivery/ai.php?filename=468×60.gif&contenttype=gif
- http://www.example.com/openx/www/delivery/lg.php?bannerid=2&campaignid=1&zoneid=1&loc=http%3A%2F%2Fwww.example.com%2Ftest.html&cb=0c9f6849c2
您可以看到,第一个URL是用来获取显示广告的代码,第二个URL用来获取实际的广告图片,第三个URL用来调用1×1 .gif图片以记录广告展现PV。为了找到为什么广告显示不出来,第一个URL是最重要的,因为它是用来调用显示广告的代码。
将第一个URL通过浏览器打开,将会返回下面的结果:
var OX_cacd23fb = ''; OX_cacd23fb += "<"+"a href=\'http://www.example.com/openx/www/delivery/ck.php?oaparams=2__bannerid=2__zoneid=1__cb=b5fcef6ca8__oadest=http%3A%2F%2Fwww.openxtips.com%2F\' target=\'_blank\'><"+"img src=\'http://www.example.com/openx/www/delivery/ai.php?filename=468x60.gif&contenttype=gif\' width=\'468\' height=\'60\' alt=\'\' title=\'\' border=\'0\' /><"+"/a><"+"div id=\'beacon_b5fcef6ca8\' style=\'position: absolute; left: 0px; top: 0px; visibility: hidden;\'><"+"img src=\'http://www.example.com/openx/www/delivery/lg.php?bannerid=2&campaignid=1&zoneid=1&loc=http%3A%2F%2Fwww.example.com%2Ftest.html&cb=b5fcef6ca8\' width=\'0\' height=\'0\' alt=\'\' style=\'width: 0px; height: 0px;\' /><"+"/div>\n"; document.write(OX_cacd23fb);
这个是用来显示广告HTML内容的Javascript代码。
很显然,上面的示例和您的实际情况是不一样的,因为您不会使用“www.example.com”域名,可能您会将OpenX安装到不同的路径,也可能您用的不是Javascript代码。无论如何,基础的过程都是一样的,在包含广告代码的页面运行时,您看到的第一个URL调用应该就是用来产生广告内容的。
如果您发现本次调用并没有任何广告内容出现,那么很有可能是您的广告服务器安装出了些问题导致广告不能正常显示。可以通过下面的步骤来定位问题。
#1.7.1: 检查Web服务器日志
查看您的Web服务器日志,尝试找到用来返回广告内容的URL地址。如果这些URL被调用时出现了错误,将会在错误日志里有所记录。通过日志可以帮您找到为什么调用出错。最常见的调用错误原因是:
- 文件或者目录的权限问题,没有权限调用OpenX下“var/cache”目录下的Cache文件或者没有权限运行OpenX下的某些代码。
- 数据服务器出错导致无法读取必须的广告信息(举例来说,数据库服务器没有运行,数据库有错误数据或错误表,数据库的用户名密码或者权限被修改过等等)
#1.7.2: 打开调试状态
如果上面的Web服务器日志仍然不能帮助您找到为什么广告内容无法返回,您需要尝试打开系统调试状态以帮助您找到更多的信息。无论如何,在做这件事情前一定要小心,因为所有的错误信息都会在生产系统上时时显示。所以,这个是最后一招。
要想打开系统调试状态,编辑OpenX配置文件,按下面的说明修改:
[debug] production=1
将production值设为0(或者”false”)。
同时,您可能需要修改PHP设置以显示错误信息。
上面这些操作只能让您看到一些错误信息,这些可能会帮助您找到错误并修改错误。如果实在没有办法修复,可以给OpenX的开发团队提交Bug。
#2.0: 有广告显示,但不是想要的广告
有时候,广告可以显示,但是显示的不是应该出现的广告。举例来说,可能会出现下面几种状况:
- 所有您看到的广告都不是您认为应该看到的;
- 有些广告您认为应该看到的,但是从来都没有看到;
- 广告显示的次数和您的期望不一样。
上面说的集中情况,下面这些步骤可能可以帮助您。
#2.1: 您使用的是正确的广告代码么?
一般来说,您看到的广告都不对的话都是因为使用的广告代码错了,经常都是在复制粘贴过程中弄错了。
尝试重新直接生成广告代码,并重新放到网站需要的位置。
#2.2: 您希望看到的广告看不到,确认其已经生效或者连接到广告位上了么?
重新确认下在广告位显示概率界面上,您期望显示的广告是有效的并且已经连接到您看到的广告位上了。另外重新确认下该广告的显示概率大于0!
#2.3: 您希望看到的广告看不到,是新加的广告或者最近刚刚修改过的么?
OpenX广告服务器使用缓存系统来保证广告投放的效率。因此,对广告的任何修改,包括连接新的广告到广告位上,将不会马上在投放中生效,除非广告缓存时间到了。
如果您希望看到的广告看不到,并且广告是新加的,或者是刚刚连接到广告位上,亦或是修改过,在缓存时间到了后在确认广告是否能够正常显示。
#2.4: 您希望看到的广告看不到,确认该广告设置了目标用户或者频次?
有时候,广告实际上是被投放了,但只是您看不到,可能是因为您设置了广告投放的目标用户或者频次,导致这些广告只能被其他特定用户看到。
使用广告位显示概率界面快速的查看下广告是否设置了目标用户或者频次,如果设置了,看下这些设置是否正确。您也可以查看下报表确认您看不到的广告是否被投放了。
#2.5: 您运行的是第三方的广告联盟广告么?
有时候,您可能在您的网站上看到了不应该出现的广告。常见的原因是因为您正在展示第三方的广告联盟广告,而第三方广告提供了新的广告主,亦或是提供了以前没有使用过的新广告格式。
尝试使用工具(类似IE下的iehttpheaders或者Firefox下的LiveHTTPHeaders)查看广告点击时的URL调用。这些可以帮您确认是哪个广告联盟在显示这些不期望展示的广告。
#2.6: 您在运行OpenX的Market么?
在OpenX 2.8版本,OpenX Market为网站主提供了为广告项目设置基础价格的功能,当某个OpenX Market里面的广告主希望付高于这个价格的钱来买这个广告展示的时候,OpenX Market将会代替原有广告项目的广告而显示这个广告主的广告。
虽然这个对于使用OpenX的发布商是一个好的消息,因为这是一种无风险的提升收入的方式。但同时也意味着任何时候,只要有OpenX Market的广告主愿意付更多的钱购买当前的广告展示,那所谓的“意外”广告就会被显示。
如果您发现当前显示的“意外”广告不是来自于第三方广告联盟,检查下广告项目,确认您是否打开了OpenX Market。这些可能是为什么您看到了“意外”广告的原因(令人高兴的赚钱广告!)。
