`
yunmoxue
  • 浏览: 285027 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

php mysql 一次连接多次查询, 每次连接只查询一次

阅读更多
对俩者的链接速度很好奇,就测试了一下...
php5,mysql5.
表里有3000条数据,
短连接查询前1000条,连接断开10次数据库,进行查询;
长连接查询后1000条,连接1次数据库,进行10次查询;
大部分测试,结果类似下边, 每次连接查询一次 耗时117毫秒, 一次连接查询多次  耗时13毫秒.

sort connection: 414.452 - 296.879: 117.573 millisecond
long connection: 427.635 - 414.489: 13.146 millisecond


<?php
	require("db_conn.php");
    $mysql_server_name="127.0.0.1"; //数据库服务器名称
    $mysql_username="root"; // 连接数据库用户名
    $mysql_password="root"; // 连接数据库密码
    $mysql_database="osc_store"; // 数据库的名字
    $search_count=10;
    $search_number = 100;
    //开始
	$begin = microtime()*1000;
	for($i=0;$i<$search_count;$i++){
		$dbConn=mysql_connect($mysql_server_name, $mysql_username,$mysql_password);
		mysql_select_db($mysql_database, $dbConn);
		$queryStr = "select * from `products_description` order by products_id asc limit ".($i*$search_number)." ".$search_number;			
		$result = mysql_query($queryStr,$dbConn);
		if(!result){
			die(mysql_error());
		}
		$list = array();
		while($row=mysql_fetch_array($result)){
			$list[$row["id"]] = $row;
		}
		mysql_free_result($result);
		mysql_close($dbConn);
	}
	$end = microtime()*1000;
	echo "sort connection: ".$end." - ".$begin.": ".(($end-$begin))." millisecond<br/>";
	unset($list);
	//开始
	$begin = microtime()*1000;
	$dbConn=mysql_connect($mysql_server_name, $mysql_username,$mysql_password);
	mysql_select_db($mysql_database, $dbConn);
	for($i=0;$i<$search_count;$i++){
		$queryStr = "select * from `products_description` order by products_id desc limit ".($i*$search_number)." ".$search_number;			
		$result = mysql_query($queryStr,$dbConn);
		if(!result){
			die(mysql_error());
		}
		$list = array();
		while($row=mysql_fetch_array($result)){
			$list[$row["id"]] = $row;
		}
		mysql_free_result($result);
	}
	mysql_close($dbConn);
	$end = microtime()*1000;
	echo "long connection: ".$end." - ".$begin.": ".(($end-$begin))." millisecond";
?>

分享到:
评论
3 楼 mahonet 2011-10-27  
这叫长连接?误人子弟吧。。。
长连接应该是 mysql_pconnect 吧。。。
2 楼 yunmoxue 2011-07-08  
flyoscar 写道
二个情况的差距这么大,以前有次考试就是这方面的。结果被淘汰了....

这种做法也是看情况了..
一般一个页面显示内容不需要多少,就一次性查出来放在内存里,等待输出显示.
但是内容多的话,比如几千条,几万条信息,就会导致超时..如果内容量大的话,有时候会内存不够.
1 楼 flyoscar 2011-07-05  
二个情况的差距这么大,以前有次考试就是这方面的。结果被淘汰了....

相关推荐

    用PHP连接MySQL代码的参数说明

    看到很多朋友都在问PHP连接MySQL的代码,其实在我的专题中几乎每次都有写到。这里,我在单独列出来说一次。

    php-mysql-client:命令行就像 mysql 数据库的客户端。 替换 phpmyadmin

    有多少次我只有一个 phpmyadmin 工具来连接到 mySQL 服务器? 每次我都讨厌它,它把我的工作变成了很多痛苦。 我讨厌 phpmyadmin。 对我来说点击次数太多,只有一个简单的 textarea 来输入 sql 查询。 我更习惯于...

    mysql与mysqli的区别与用法说明

    也就是说 mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销 有些朋友在编程的时候,使用new mysqli(‘localhost’, usenamer’, ‘password’, ‘databasename...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。本教程并不想让你完全了解这种语言,只是能使你尽快加入开发动态web站点的行列。我假定你有一些HTML(或者HTML编辑器)的基本知识和一些编程思想。 1...

    php的慢速日志引起的Mysql错误问题分析

    在我们的项目中,开启PHP的慢速日志(request_slowlog_timeout = 10s)是必选项,并且它也让我们发现了很多坑,解决了很多的性能问题。... 3)修改mysql连接类,query之前,执行mysql_ping也无效,

    anyoucms-mysql.rar_sql injection_单点登录_可搜索加密

    面向服务对象 主要针对企业,自助建站 简单,安全,个性化,人性化, ...单点登录(每次每个帐号只能登录一次,其他人重复登录将被提下线) 系统管理支持2种权限 超级管理和内容管理 内容管理(只能发表内容) 超级管理(所有权限)

    让mayfish支持mysqli数据库驱动的实现方法

    也就是说 mysql 每次链接都会打开一个连接的进程而 mysqli 多次运行 mysqli 将使用同一连接进程,从而减少了服务器的开销 因为近段时间,网站也因为访问量的增加,而一直被进程占满的问题所困扰。所以,为了减少进程...

    PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结

    ——常用于以后被多次执行的语句。 3.可读性强。 代码 数据库连接代码都一样. 复制代码 代码如下: $protol = ‘mysql:host=localhost;dbname=test’; $username = ‘monty’; $passwd = ‘0818’; $dbh = new PDO($...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    这些都预示着我们进入了一个新的互联网阶段web 2.0,它是相对web 1.0的新的一类互联网应用的总称,是一次从核心内容到外部应用的革命[10]。这个阶段发展迅速,互联网应用趋于多样化,其中变化最大的是由web 1.0网站...

    Linux操作系统基础教程

    它本身就是一个完整的 32 位的多用户多任务操作 系统,因此不需要先安装 DOS 或其他的操作系统(MS Windows, OS2, MINIX..)就可以进 行直接的安装。 Linux的最早起源是在1991年10月5日由一位芬兰的大学生Linux ...

Global site tag (gtag.js) - Google Analytics