作者LaPass (LaPass)
看板PHP
标题Re: [请益] 使用连接资料库的CLASS,效率会不会较慢
时间Tue Sep 18 22:58:04 2012
※ 引述《PTTLSboy (阿铯)》之铭言:
: 目前是使用一个CLASS,专门用来连接资料库及一些mysql函式
: 1.假设当有一笔资料要新增: (注:db_mysql是我的class)
: $test_insert=new db_mysql("insert into ... "); //处理SQL
: $test_insert->close(); //关闭连接
: unset($test_insert);//释放记忆体
觉得用class去管资料库,不应该是这样
因为这样写,会导致一条SQL就开一条连线
我比较常看到的方法是这样:
$DBLink = new DBLink();
开启连线
$insert1 = $DBLink->getSQL("insert into ....");
$insert2 = $DBLink->getSQL("insert into ....");
$insert3 = $DBLink->getSQL("insert into ....");
......
一堆SQL操作
$DBLink->close();
关闭连线
不知道PHP有没有连接池之类的东西
有的话,处理方式又不一样了
: 当要做SELECT或是其他的动作又要再来一轮,每一次都宣告一个CLASS
: 的记忆体然候做完再释放
: 2.如果是用function把连接资料库的程式码包起来 ($connection= ... 略)
: $query="insert to ...";
: $result=mysql_query($query,$connection);
: mysql_close($connection);
: 这样直接执行,效率会不会比较高,电脑书上是教这种方法
: ---------------------------------------------------------
: 因为目前公司案子是用CLASS连接的写法,所以一直有此疑问,哪个效率上较好
: 请问各位前辈都是用什麽方法写的呢?
: 感谢看完!!
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.38.87.167
1F:推 PTTLSboy:请问这样还有办法单独关闭$insert1~3其中一条SQL吗? 09/18 23:16
2F:→ LaPass:应该是可以直接关$insert1之类的result,虽然我不常用php, 09/18 23:36
3F:→ LaPass:但这种从底层实现上去的东西,应该不会差太多。 09/18 23:37
4F:推 PTTLSboy:嗯嗯,感谢! 看来CLASS该重新设计过 09/18 23:56
5F:→ gname:考虑 singleton 吗? 09/19 09:11
6F:→ MOONRAKER:unbuffered_query就不需要关闭了。就算只是普通的query 09/19 10:51
7F:→ MOONRAKER:也还可以free_result()。事实上insert的传回成本也就是 09/19 10:53
8F:→ MOONRAKER:一个bool而已。我认为这完全是想太多。 09/19 10:54
9F:→ LaPass:主要是针对SELECT的时候..... 09/19 12:18
10F:→ LaPass:资料库会卡在那边等你要资料..... 09/19 12:18