sql语句引起的服务器内存上升问题

SQL语句和PHP中语句与MYSQL连接初学者一定认为没有什么问题,现在如下正常的连接

这是服务器的配置文件

<?php
session_start();
//数据库配置信息
define('DB_HOST', 'localhost'); //数据库服务器主机地址    
define('DB_USER', '123456'); 			//数据库帐号    
define('DB_PW', '123456'); 				//数据库密码    
define('DB_NAME', 'example'); //数据库名     
define('DB_CHARSET', 'utf8'); 	//数据库字符集    
define('DB_PCONNECT', 0); 			//0 或1,是否使用持久连接    
define('DB_DATABASE', 'mysql'); //数据库类型  
$con=mysql_connect(DB_HOST,DB_USER,DB_PW) or die('链接数据库失败!');
mysql_query('set names utf8');
mysql_select_db(DB_NAME);
?>
新手需要注意如下问题,
define('DB_PCONNECT', 0);
这里关系到是否使用持久连接:

永久的数据库连接是指在您的脚本结束运行时不关闭的连接。当收到一个永久连接的请求时。PHP 将检查是否已经存在一个(前面已经开启的)相同的永久连接。如果存在,将直接使用这个连接;如果不存在,则建立一个新的连接。所谓“相同”的连接是指用相同的用户名和密码到相同主机的连接。 
对 WEB 服务器的工作和分布负载没有完全理解的读者可能会错误地理解永久连接的作用。特别的,永久连接不会在相同的连接上为您提供建立“用户会话”的能力,也不提供有效建立事务的能力。实际上,从严格意义上来讲,永久连接不会给您提供任何非永久连接无法提供的特殊功能。

然后看新手对于php连接mysql的方法:

<?php
require_once('function.php');
$db = mysql_connect('localhost', '123456', '123456') or die('Could not connect: ' . mysql_error());
			mysql_select_db('example') or die('Could not select database');
        // 检查数据库连接
        if (mysqli_connect_errno()) {
            $errmsg = "数据库连接失败!\n";
        }
        else {
            // 查询数据库,看用户名及密码是否正确
            $sql = "SELECT * FROM user WHERE username='$username' AND password='$password'";
            $result = mysql_query($sql);
mysql_free_result($result);   //释放内存
				// 关闭连接
mysql_close($db);
        }?>
这是一个正常的mysql连接和一个sql的查询语句

但是如果偷懒如下也可以:(会引发服务器内存问题

<?php
require_once('function.php');
            $sql = "SELECT * FROM user WHERE username='$username' AND password='$password'";
            $result = mysql_query($sql);

        }?>
看多简洁,但是会引发服务器内存撑爆的问题,为什么呢?

因为没有关闭对于mysql的连接啊~

还有一个问题,就是如果使用了pconnect函数,这是对于服务器的持久化连接~

确实,使用了这个函数可以加速链接的性能,大概可以节约几个毫秒吧~

但是!!!!!!!!

有人说:,数据库连接会自动的断开~~~太假了~~不会自动断开,BS误导小白的人~






posted @ 2012-05-10 21:01  稻草哥  阅读(1389)  评论(0)    收藏  举报