应该没有必要吧。毕竟这门语言的创始人,开发团队会有这方面的考虑。就算会往这方面发展,也要看php版本的发展了。

解决方案 »

  1.   

    错了,长连接并非只能建立一个连接。长连接其实也是数据库的一个操作建立一个连接。不信你自己使用长连接,然后去mysql下show processlist看看。写个连接池其实还是不错的,可以令长连接比现在更有价值。但要深入研究下如何管理才能使得效率比短连接更好。比如,一个连接应当存在多久?哪些操作不需要再重新建立连接(我认为,对于操作空闲时间少于一定值的数据库操作应该一直保持连接状态)?何时该彻底关闭连接(当操作空闲时间大于一个值的时候断开此连接)?这些可以在扩展库里面定义好,但也要提供接口给php开发人员,让他们自己show出当前所有连接,让他们也可以自己断开某个连接。这个超时时间一定要拿捏好,并且这些操作针对不同的服务器,不同的web应用,肯定都是不同的。你要建立连接池,首先,你必须将所有连接默认为长连接。
    长连接是无法通过方法关闭,它主要受限于wait_timeout或interactive_timeout的值。那么问题就来了,你的c扩展,该通过何种方法直接关闭一个长连接?动态更改wait_timeout或interactive_timeout的值?这不现实吧?而且这个值是针对全部连接的,你无法只针对某一个连接来做这个操作。所里这个连接池看起来简单,实际上还是有不少问题值得思考的,mysql提供的接口是否够我们的c扩展库来用。首先要把mysql的底层研究透彻。php开发团队没有提供连接池,也许是受限于php和mysql的特性决定了这种短连接的方式最合适。不然它为什么不模仿java呢?
      

  2.   

    上面说的有点问题,长连接对于不同的socket请求,一个请求会建立一个连接。
      

  3.   

    长连接数相关apache进程吧,每开一个进程,如果用了长连接就建立了一个,废话……apache彻底回收一个进程后,这个长连接结束,是不是这样啊
    连接池……好烦啊……
      

  4.   

    没用,Apache等web server就可以搞定这些一个页面就只有一个处理!