|
我用这些代码开发了几十个项目了,但现在有一个网站在访问量稍大一些的情况下出了
问题,就是占用内存过多,以及连接数过等问题.所以想请大家帮我分析下我的编程方式是否
有问题,多谢了,相信中国PHP界的高人都在LINUXSIR.
我先贴一个完整运行的页面程序的代码:
[PHP]
<?php
include_once("db.php");
// 注:给论坛上的朋友解释:上面这行代码包含了一个数据库连接文件,里面有连接数
据库的语句和用户名以及密码,具体这个文件的内容,我下面会贴出代码。
$query = "select * from member where tid='$_COOKIE[mid]' and md5(password)='$_COOKIE[password]' " ;
$result = mysql_db_query($DataBase, $query);
$login=0;
if($r = mysql_fetch_array($result))
{
$login=1;
}
if($login==0)
{
include_once("loginalltwo.php");
exit;
}
//上面语句判断会员登录情况,login=0表示登录,为1表已经登录,其中:$_COOKIE[mid] 记录
会员登录后的id, $_COOKIE[password]记录会员登录后加密后的密码,之所以这样做,是
为了防止伪造COOKIE的现象,而这种方式要想伪造别人COOKIE登录的话,就要先知道别人的
密码,所以解决了伪造COOKIE登录的问题。
//所以上段代码也就是从使用者电脑里面找COOKIE和服务器数据库里面的用户名和密码进行
匹配,如果匹配成功,则说明正确登录,如匹配失败,则说明错误登录。
//另外,我用了一个变量记录登录状态,以备后面使用,$login=0,表示为游客访问,$login=1表示
为正式会员访问,如果是游客访问,我则包含一个loginalltwo.php 这是一个会员登录的界面。
?>
<?php
if(empty($_GET[tid])){$_GET[tid]=$r[tid]; }
//如果传递的会员ID值为空的话,则ID值为已登录的会员ID值
$result = mysql_db_query($DataBase,"select * from member where tid='$_GET[tid]' ");
//根据ID传值找出会员信息。
if($r3 = mysql_fetch_array($result))
{
if($r3[tid]!=$r[tid] and $login==1)
{
$looktime=time();
$sql = "delete from look where member='$r3[tid]' and lookmember='$r[tid]' ";
$rr = mysql_db_query($DataBase, $sql);
$query = "INSERT INTO look (member,lookmember,looktime) VALUES ('$r3[tid]','$r[tid]','$looktime')";
$result = mysql_db_query($DataBase, $query);
}
}
//上面几行代码,记录浏览页面的会员,也就是谁什么时间看过谁的页面,记录到数据库中。
if($r3[s1]!='')
{
echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=ask/teacherhome.php?tid=$r3[tid]'>";
exit;
}
//上面代码是我判断用户身份的,如果是另外一种属性的身份,则网页跳转到另一个页面,程序退出。
if($r3[x2]==0)
{
$myschool="默认社区";
$myschoolid=1716;
}else
{
$result = mysql_db_query($DataBase,"select * from school where tid='$r3[x2]' ");
$r6 = mysql_fetch_array($result);
$school=$r6[name];
$myschool=$r6[name];
$myschoolid=$r6[tid];
}
//上面代码根据会员所属的ID号,找出会员所属的社区问题,因为有几千个社区,所以要找出该会员所属的社区信息。
$query = "select count(tid) from look where member='$r3[tid]' ";
$result2 = mysql_db_query($DataBase, $query);
$rr2 = mysql_fetch_array($result2);
//上面这行代码,求出有多少人看过该会员的页面
$query= "update member set homeviews=homeviews+1 where tid='$_GET[tid]' ";
$result = mysql_db_query($DataBase, $query);
//将被查看会员的页面浏览次数加1
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>会员资料页面</title>
<link href="css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
include_once("toptwo.php");
//这行代码包含网站顶部文件,不含PHP代码,只有HTML
?>
<table width="950" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="210" align="left" valign="top"> <?php
include_once("lefttwo.php");
//这行代码包含网站左侧文件,该文件具体代码我在下面会列出来
?></td>
<td width="740" align="left" valign="top">
</td>
</tr>
</table>
</td>
<td width="240" align="left" valign="top">
</td>
</tr>
</table>
</td>
</tr>
</table>
<?php
include_once("bottomtwo.php");
//这行代码包含网站底部文件,不含PHP代码,只有HTML
?>
</body>
</html>
[/PHP]
注:上面是一个web2.0社区网站中,显示会员资料和记录会员的一些站内活动的页面.在这个页面程序里面总共用了5个
include_once()用来包含外部文件.
具体包含的外部文件的功能,我在代码注释里面写过了,请大家看看
下面我把包含的含有PHP代码的两个文件贴出来.
一,db.php
内容如下:
[PHP]
<?php
$db=mysql_connect('localhost','dataone','123321') or die ("roblem connecting to DataBase");
$DataBase="dataone";
?>
[/PHP]
二,lefttwo.php
内容如下:
[PHP]
<?php
include_once("db.php");
$query = "select * from member where tid='$_COOKIE[mid]' and md5(password)='$_COOKIE[password]' " ;
$result = mysql_db_query($DataBase, $query);
$login=0;
if($r = mysql_fetch_array($result))
{
$login=1;
}
//上面语句判断会员登录情况,login=0表示登录,为1表已经登录,其中:$_COOKIE[mid] 记录会员登录
后的id, $_COOKIE[password]记录会员登录后加密后的密码,之所以这样做,是为了防止伪造COOKIE的现
象,而这种方式要想伪造别人COOKIE登录的话,就要先知道别人的密码,所以解决了伪造COOKIE登录的问题。
//所以上段代码也就是从使用者电脑里面找COOKIE和服务器数据库里面的用户名和密码进行匹配,如果匹配成功,
则说明正确登录,如匹配失败,则说明错误登录。
//另外,我用了一个变量记录登录状态,以备后面使用,$login=0,表示为游客访问,$login=1表示为正式会员访问,
如果是游客访问,我则包含一个loginalltwo.php 这是一个会员登录的界面。
if($login==1)
{
echo"已登录";
}else
{
echo"未登录";
}
?>
[/PHP]
以上所有代码是一个页面程序所所有架构及实现方法,请大家帮我分析一个我写的这些代码有什么影响PHP程序性能的地方吗?
尤其是在内存管理以及释放方面,
以及在MYSQL操作方式的方面,
在文件的包含方面等等.
再次感谢! |
|