我有一个广告网络脚本,如下所示
http://cdn.domain.com/ad.php?variables=etc
我们每秒有大约10,000次点击,我们正在考虑对我们的伪代码进行一些改进 - 这就是我想到的 - 我的问题是 - PHP会不会像if else代码一样减慢我的脚本,它会不会值得在这个页面上缩小PHP:
<?php
// mysql connect
// get variables from publisher
// if publisher has no ads show advertise here banner
// if resolution from variables is 125x125 show that banner or whatever resolution from the vars
// example www.noadhere.com/image/advertishere_{var}125px.jpg
// if publisher has no ads show advertise here banner and also updated mysql with page views for this publisher
// if publisher has a banner then show it and update mysql with page views
// show also the click code that redirects and updates the record with a hit click
?>
我已经更新了代码。对于那些感兴趣的人来说,这是第1阶段草案。我认为这样简单得多,我会缩小它 - 尽管可能没有必要 - 我们有4个mysql动作正在发生。现在有3个 - 我只是让更新视图成为一个内容。
# mysql
$c=mysql_connect("sqlmaster.adserver.com","user","************");
mysql_select_db("adserver", $c);
# vars
$a=mysql_real_escape_string($_GET["z"]);//id
$z=mysql_real_escape_string($_GET["z"]);//zone
$h=mysql_real_escape_string($_GET["h"]);//height
$w=mysql_real_escape_string($_GET["w"]);//width
$d=date("Y-m-d H:i:s");//date
$u=mysql_real_escape_string($_SERVER['HTTP_REFERER']);//url
# constructor
# do we have ads?
$r1=mysql_query("");
if(mysql_affected_rows()==0){
# empty ad code unit
echo 'Blog Empty';
} else {
# we have ads - so show random click code
echo 'Click here .php ? and redirect';
}
# update mysql view table for this ad unit - empty or filled
$r2=mysql_query("");
# end constructor
mysql_close($c);
任何有关改善这一点的建议都会受到欢迎。我认为mysql_real_escape很慢。
答案 0 :(得分:2)
使用include只会减慢脚本的速度,因为服务器打开文件所需的时间通常只有几分之一秒。所以它不会大大减慢你的脚本执行速度。
答案 1 :(得分:1)
使用PHP缓存时,包含真的无关紧要。但是,肯定存在很小的差异。
我自己的构建脚本自动替换包含“普通”代码,使用向后兼容PHP的自制语法:
/*safeinclude*/ include 'file.php';
我的解析器然后读取PHP文件并注意到这包括。它抓取file.php
文件的内容并用此代码替换include(在进行一些清理之后,例如删除前导<?php
标记)。然后它被保存到bin
目录,这是实时文件所在的目录。
此方法效果很好,但您必须始终检查<?php
和?>
标记。此外,您必须拆分src
和bin
目录,因为您无法更改已经存在的任何内容。
优化的主要关注区域应该是数据库,以及其他CPU密集型操作,例如循环。
答案 2 :(得分:1)
有很多方法可以让代码运行得更快。通常将代码拆分为单独的文件不会提高性能(有选择地只包括您需要的代码而不是大型库可能会有所帮助)。
您可能已经注意到,没有很多用于缩小PHP代码的现成解决方案 - 这是有充分理由的。它不会对执行时间产生很大的影响(它主要是由于网络传输时间的减少 - 而不是减少解析时间)。 PHP代码不会通过网络。如果你想减少解析时间,那么使用操作码缓存是一个非常有效的解决方案。
由于这可能是一笔重要的收入来源,因此您应该具备了解这一点的技能。然而,通过反复试验(以及仔细的实验设计和测量)会带来很多性能改进 - 您可能需要花一些时间来开发这些设施。
答案 3 :(得分:0)
运行if和else的好处是只运行需要运行的代码。包含的页面以一秒钟的速度加载,并且对速度没有任何影响。大多数大型网站都有很长的包含文件,你并没有真正注意到它。