影响PHP+MYSQL执行速度的写法对比第7/7页
发布于 2014-09-14 18:54:17 | 87 次阅读 | 评论: 0 | 来源: 网友投递
PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。
[code]<?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;
?>
for($i=0;$i
{
?>
|
}
?> [/code]
问题一:为什么要用
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);
}
?>
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);
}
?>
而不用:
$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++;
}
?>
$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的下方?
答:这个是有很大区别的,其一:代码放在上方,如果对代码进行修改的话,用DREARWEAVER再看下面视图的时候,不会有慢的感觉.
其二:大部分代码全部放在上方,而不是放在下方,对PHP脚本的解析运行有好处,可以减轻PHP服务器解析脚本的负担,并且符合模版及缓存设计思想.
问题三:为什么要用
view plaincopy to clipboardprint?
$query = "select count(*) from ask_member where $t ";
$result2 = mysql_db_query($DataBase, $query);
$r3 = mysql_fetch_array($result2);
$amount=$r3[0];
?>
$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?
$query = "select * from ask_member ";
$result2 = mysql_db_query($DataBase, $query);
$amount=mysql_num_rows($result2);
?>
$query = "select * from ask_member ";
$result2 = mysql_db_query($DataBase, $query);
$amount=mysql_num_rows($result2);
?>
答:第一种是对一条记录的查询,第二种是对所有记录的查询,两者速度有天壤之别.
问题四:为什么上面要多一行
view plaincopy to clipboardprint?
$n=count($r2)-1;
?>
$n=count($r2)-1;
?>
而不是下面直接用:
view plaincopy to clipboardprint?
for($i=0;$i
{
?>
for($i=0;$i
{
?>
答:应该尽量减少在以下进行PHP的运算,如果过多地在下进行运算的话,那就成了混编了.
问题五:为什么说以上代码是核心代码?
答:任何一位程序员都知道,读数据的分页读出是最常用的,我想大部分的PHP程序员30%的时间都是发在这个上面吧.
以上是我总结出的最快的写PHP的经验,请广大网友指正,如果觉得可以的话,希望所有人都能用这种方式来写程序,那样的话我以后安排一批PHP程序员进行分工协调的时候也好办多了.
相关阅读:
影响PHP+MYSQL执行速度的写法对比第7/7页
PHP+MySQL投票系统的设计和实现代码
PHP+MYSQL会员系统的登陆即权限判断实现代码
PHP 函数执行效率的小比较
PHP+MYSQL会员系统的开发示例教程
PHP定时执行任务的实现方法
PHP+MySQL修改记录的方法
php定时执行任务的实现方法
PHP+MYSQL实现用户的增删改查(curd)
php+mysql实现简单的增删改查功能
PHP定时执行任务的3种方法详解
php mysql访问数据库的步骤详解