怎么检验PDO的连接数量

szuzsq 2017-07-19 05:49:17
我没使用持久化连接.

有个脚本test.php里面用了2个类User.php和Order.php..
这2个类里面都有一句

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);


那我想问,我现在是连接了2个PDO呢,还是1个PDO?
因为mysql连接数有限,比如一个脚本里面,可能用到了很多ORM的类.那我想的是,不要每个ORM的类都是一个连接,而是整个脚本使用一个连接,这样即是没浪费mysql的连接数,也提高性能.

我去哪里看,我用了多少个连接,或者怎么做成一个脚本只用一个连接.
...全文
129 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
szuzsq 2017-07-20
  • 打赏
  • 举报
回复
引用 3 楼 u014567183 的回复:
php脚本运行完,会自动释放内存。无论全局变量,还是静态变量都会释放掉。 所以,按照你说的,应该是在整个脚本,而不是整个系统。
如果可以设置,只要相同的凭证,就只连接一次就好了.还省下了单例(怕线程不安全) 但我没找到设置哪个东西,我以下代码,产生了2条连接

use PDO;

$options = array(/*PDO::ATTR_CASE => PDO::CASE_LOWER,*/ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_ORACLE_NULLS => PDO::NULL_TO_STRING, PDO::ATTR_STRINGIFY_FETCHES => false);
if(version_compare(PHP_VERSION, '5.3.6', '<=')) //禁用模拟预处理语句
	$options[PDO::ATTR_EMULATE_PREPARES] = false;

$dsn = 'mysql:dbname=weixin;host=localhost;port=3306;charset=utf8';
$username = 'root';
$password = '';
$p = new PDO($dsn, 'root', '', $options);
$p2 = new PDO($dsn, 'root', '', $options);

usleep(1000 * 1000 * 6);
u014567183 2017-07-20
  • 打赏
  • 举报
回复
php脚本运行完,会自动释放内存。无论全局变量,还是静态变量都会释放掉。 所以,按照你说的,应该是在整个脚本,而不是整个系统。
szuzsq 2017-07-19
  • 打赏
  • 举报
回复
引用 1 楼 u014567183 的回复:
使用单例模式。
单例基本上都是通过在类中使用static来实现的.

class Single {
	public static $m_pdo = null;
}
那我想问一问,对于这个单例来说,它是在整个脚本中单例呢?还是整个系统中单例? 即如果并发访问时,我使用的连接是同一个还是不同的? 我要求在相同的脚本中使用同一个连接,,并发时,不使用同一个连接...
u014567183 2017-07-19
  • 打赏
  • 举报
回复
使用单例模式。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧