php的数据库连接单例模式思考

liyuzhao7年前开发项目遇到的问题1719

最近在做一个客服聊天的插件,无意中考虑到数据库使用单例模式的问题。我当时的疑问是:

 数据库用了单例模式  每个用户去访问这个应用 这个单例模式的数据库资源是不是被每个用户共享的?

 如果是 这样是不是会出现并发问题?

如果不是 是不是php脚本执行完 就释放了这个数据库资源

那这样单例模式的作用体现在哪里呢?


经过了解,我大概已经懂了。

答案:

1:单例模式的数据库资源不会被每个用户共享,因为php是脚本语言,一个php文件被执行完就会释放所有的资源,包括静态资源(这里不像java,java的单例模式资源生命周期存在整个应用中)。

2:如果不是被用户公用,那么这样的单例模式又有什么用呢?作用是当你一个php文件里面存在多个数据库操作的时候,如果你不用单例模式,你会new一个数据库类,然后用里面的方法操作数据库,但是这样会产生一个资源耗费,就是你new一个对象的时候会消耗资源,多个操作你就会产生多个new,这样无疑会减低性能。所以采用单例模式,单例模式只会产生一个对象资源,直到你这个php文件执行完毕,这个资源才会被释放,所以在这个php文件中可以多次使用这个连接资源,而不用重新new生成,从而减少数据库的压力。


相关文章

在 hyperf 中使用 MongoDB

欢迎使用 phper666/mongo-db,地址:https://github.com/phper666/mongo-db1、默认使用mongodb提供的库来封装,官方git地址:https://g...

一台云服务器配置两个网站

一台云服务器配置两个网站

一台云服务器配置两个网站最近一直在烦恼,一台云服务器怎么配置两个网站呢?我在本地的win10环境下配置apache的两个虚拟主机和两个ip可以成功的用不同的地址访问到不同的www下的目录。操作如图:1...

hyperf 启动、重启、停止、文件变化监听命令包

鉴于hyperf1.1+还没有重启等命令,本地调试比较麻烦,所以使用了FanchangWang写的代码封装成了一个包,方便使用。该扩展包完全使用了FanchangWang写的代码,非常感谢Fancha...

vue的axios的post跨域问题!

最近在学vue,用axios的post跨域请求api的时候出现了问题。后面查资料,发现是跨域请求是有区别的。一种是简单的跨域请求:get另一种是非简单的跨域请求:post put 等等 。请看http...

chm索引不能使用问题

想查查mysql的一些编程需要的函数,但是在win7 下chm索引用不了,上网查了很久,是因为某些全文的索引没有打开。在运行那里输入:regsvr32 hhctrl.ocxregsvr32 itss....

使用apache2.4以上外网访问不到的问题解决

找到加入一行Require all granted即可注意:每个人的安装路径都不一样,要看准安装路径来查找...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。