php文摘

关注公众号 jb51net

关闭
首页 > 网络编程 > PHP编程 > php文摘 >

影响PHP+MYSQL执行速度的写法对比

作者:

影响PHP+MYSQL执行速度的写法对比

复制代码 代码如下:
<?php 
include_once("../db.php"); 

if($_GET[x2]==0 and $_GET[x1]==0) 

$t=" s1='' "; 
}else 



if($_GET[x2]!=0) 

$t=" x2='$_GET[x2]' "; 
}else 
if($_GET[x1]!=0) 

$t=" x1='$_GET[x1]' and x2=0 "; 




$query = "select count(*) from ask_member  where  $t   "; 
$result2 = mysql_db_query($DataBase, $query); 
$r3 = mysql_fetch_array($result2); 
$amount=$r3[0]; 
$page_size=5; 
if($amount%$page_size==0 and $amount>0) 

$pagecount=($amount/$page_size); 
}else 

$pagecount=intval($amount/$page_size)+1; 

if($_GET==0) 
{$_GET=1;} 
if($_GET>$pagecount) 
{$_GET=$pagecount;} 
$page=$_GET; 
$a=($_GET-1)*$page_size;     
$query = "select tid,truename,school,study,city,logo,year,month,x1,x2 from ask_member where  $t order by logo desc, logintime desc limit $a,$page_size "; 
$result = mysql_db_query($DataBase, $query); 

while($r2[] = mysql_fetch_array($result)) 
{     


foreach($r2 as $rr2) 


$query = "select name,tid from ask_school  where tid='$rr2[x2]' "; 
$result2 = mysql_db_query($DataBase, $query); 
$r5[] = mysql_fetch_array($result2); 



$n=count($r2)-1; 


?> 








<?php 
for($i=0;$i<$n;$i++) 

?>         

             

            <table width="100%" border="0" cellpadding="5" cellspacing="1" bgcolor="#57ACF2"> 
              <tr> 
                <td align="center" bgcolor="#FFFFFF"> 
<table width="690" border="0" cellspacing="0" cellpadding="0"> 
                    <tr valign="middle">  
                      <td width="80"><img  
            src="../ask/center/memberlogo/<?php if($r2[$i][logo]!=''){echo $r2[$i][logo];}else if ($r2[$i][sex]=='女'){echo "default.gif";}else{echo "default3.gif";} ?>"  border=0 width="100" height="127" onload="javascript:DrawImage(this,100,127)"></td> 
                      <td width="430"><strong><?php echo $r2[$i][truename]; ?> - <font color="#85B000">信息 :)</font></strong><br> 
                        字段一:<a href="#" class="blue"><?php echo $r5[$i][name]==''?'内容':$r5[$i][name]; ?></a> <br> 
                        字段二:<a href="#" class="blue"><?php echo $r2[$i][study]; ?></a><br> 
                        字段三:<a href="#" class="blue"><?php echo $r2[$i][year]; ?><?php echo $r2[$i][month]; ?></a><br> 
                        浏览:<a href="#" class="blue">一</a> <font color="#0E6FBE">|</font>  
                        <a href="#" class="blue">二</a> <font color="#0E6FBE">|</font>  
                        <a href="#" class="blue">三</a> </td> 
                      <td width="180" align="right"><table width="110" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> 
                          <tr> 
                            <td height="20" align="center" bgcolor="#eeeeee"><a href="hello.php?tid=<?php echo $r2[$i][tid]; ?>">打个招呼</a></td> 
                          </tr> 
                        </table> 
                        <table width="110" border="0" cellspacing="0" cellpadding="0"> 
                          <tr> 
                            <td height="3"></td> 
                          </tr> 
                        </table> 
                        <table width="110" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> 
                          <tr>  
                            <td height="20" align="center" bgcolor="#eeeeee"><a href="sendmessagelook.php?tid=<?php echo $r2[$i][tid]; ?>">其它操作</a></td> 
                          </tr> 
                        </table> 
                        <table width="110" border="0" cellspacing="0" cellpadding="0"> 
                          <tr>  
                            <td height="3"></td> 
                          </tr> 
                        </table> 
                        <table width="110" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> 
                          <tr>  
                            <td height="20" align="center" bgcolor="#eeeeee"><a href="addfriend.php?tid=<?php echo $r2[$i][tid]; ?>">操作二</a></td> 
                          </tr> 
                        </table> 
                        <table width="110" border="0" cellspacing="0" cellpadding="0"> 
                          <tr>  
                            <td height="3"></td> 
                          </tr> 
                        </table> 
                        <table width="110" border="0" cellspacing="0" cellpadding="0"> 
                          <tr>  
                            <td height="3"></td> 
                          </tr> 
                        </table> 

                         
                      </td> 
                    </tr> 
                  </table> 
                </td> 
              </tr> 
            </table> 
            <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
              <tr> 
                <td height="10"></td> 
              </tr> 
            </table> 

             
<?php 

?> 

问题一:为什么要用 
复制代码 代码如下:
<?php    
while($r2[] = mysql_fetch_array($result))    
{        
}    

foreach($r2 as $rr2)    
{    

$query = "select name,tid from ask_school  where tid='$rr2[x2]' ";    
$result2 = mysql_db_query($DataBase, $query);    
$r5[] = mysql_fetch_array($result2);    

}    
?> 
  
复制代码 代码如下:
<?php 
while($r2[] = mysql_fetch_array($result)) 
{     


foreach($r2 as $rr2) 


$query = "select name,tid from ask_school  where tid='$rr2[x2]' "; 
$result2 = mysql_db_query($DataBase, $query); 
$r5[] = mysql_fetch_array($result2); 


?> 



而不用:

复制代码 代码如下:
<?php    
$j=0;    
while($r2[$j] = mysql_fetch_array($result))    
{    
$query = "select name,tid from ask_school  where tid='$r2[$j][x2]' ";    
$result2 = mysql_db_query($DataBase, $query);    
$r5[$j] = mysql_fetch_array($result2);    
$j++;        
}    
?>    

复制代码 代码如下:
<?php 
$j=0; 
while($r2[$j] = mysql_fetch_array($result)) 

$query = "select name,tid from ask_school  where tid='$r2[$j][x2]' "; 
$result2 = mysql_db_query($DataBase, $query); 
$r5[$j] = mysql_fetch_array($result2); 
$j++;     

?> 



答:因为PHP网站在运行过程中,真正影响速度的原因只有一个,那就是对MYSQL的读取,至于程序多运行一两次复制和拷贝,很难对速度造成影响.所以在读取MYSQL的时候,我宁愿多一次内存中的运算,也不愿有什么操作影响到对MYSQL的读取.

问题二:为什么不用模版写程序?

答:因为PHP已经是最好的模版引擎了,为什么还要用其它的模版呢?


问题三:为什么把大量的PHP代码放在<HTML>的上方,而不是放面HTML的下方?

答:这个是有很大区别的,其一:代码放在<HTML>上方,如果对代码进行修改的话,用DREARWEAVER再看下面视图的时候,不会有慢的感觉.
其二:大部分代码全部放在<HTML>上方,而不是放在<HTML>下方,对PHP脚本的解析运行有好处,可以减轻PHP服务器解析脚本的负担,并且符合模版及缓存设计思想.
问题三:为什么要用

view plaincopy to clipboardprint?
<?php   
$query = "select count(*) from ask_member  where  $t   ";   
$result2 = mysql_db_query($DataBase, $query);   
$r3 = mysql_fetch_array($result2);   
$amount=$r3[0];   
?>   
<?php
$query = "select count(*) from ask_member  where  $t   ";
$result2 = mysql_db_query($DataBase, $query);
$r3 = mysql_fetch_array($result2);
$amount=$r3[0];
?>


而不是用:

view plaincopy to clipboardprint?
<?php   
$query = "select * from ask_member  ";   
$result2 = mysql_db_query($DataBase, $query);   
$amount=mysql_num_rows($result2);   
?>   
<?php
$query = "select * from ask_member  ";
$result2 = mysql_db_query($DataBase, $query);
$amount=mysql_num_rows($result2);
?>


答:第一种是对一条记录的查询,第二种是对所有记录的查询,两者速度有天壤之别.


问题四:为什么上面要多一行

view plaincopy to clipboardprint?
<?php   
$n=count($r2)-1;   
?>   
<?php
$n=count($r2)-1;
?>


而不是下面直接用:

view plaincopy to clipboardprint?
<?php   
for($i=0;$i<count($r2)-1;$i++)   
{   
?>   
<?php
for($i=0;$i<count($r2)-1;$i++)
{
?>


答:应该尽量减少在<HTML>以下进行PHP的运算,如果过多地在<HTML>下进行运算的话,那就成了混编了.


问题五:为什么说以上代码是核心代码?
答:任何一位程序员都知道,读数据的分页读出是最常用的,我想大部分的PHP程序员30%的时间都是发在这个上面吧.

以上是我总结出的最快的写PHP的经验,请广大网友指正,如果觉得可以的话,希望所有人都能用这种方式来写程序,那样的话我以后安排一批PHP程序员进行分工协调的时候也好办多了.

阅读全文