我用的是php5.2.4+mysql5.0.51 ,有下面几个问题:
1. 如果多用户同时访问,会不会因为连接太多使数据库跨掉啊?有什么解决办法?
2. 我考虑过用连接池,但是找不到 php+mysql的连接池 相关的资料,网上只是说php好像不支持连接池。我实在是糊涂了,如果哪位知道怎么写这个连接池请告诉我,有代码最好。
3. 如果不用连接池,php怎么处理连接太多的问题呢?总不能对数据库操作一次就开个连接吧?那样是不是效率太低了?也太占用资源了?以上的问题如果有知道的请告诉我,哪怕知道其中的一个也可以,谢谢啦。

解决方案 »

  1.   

    1. 不会,如果大于mysq的最大连接数,则server会拒绝连接
    2. 可以使用PHP扩展来实现简单的连接池
    3. 可以使用长连接来提升一些效率。
      

  2.   

    如果不用连接池,php怎么处理连接太多的问题呢?可以考虑用缓存哦!
      

  3.   

    第二条, 自己写个扩展,使用C++实现mysql的连接池。缓存的话,你可以将常用一些查询结果返回, 这样就不用每次都去真实查询了。
      

  4.   

    Php有很多数据库持久层框架可以使用
    比如 SqlRelay
    http://sqlrelay.sourceforge.net/如果你觉得配置起来麻烦可以直接使用Memcached做数据缓存,只要控制好键与数据的对应关系操作起来还是很容易的.而且自己模拟出一个池来也不是很困难.相关问题可以去我的群问.
      

  5.   

    我是个php新手,很新的那种,对楼上说的不是很理解,能不能不考虑其他的框架和工具,只用php来实现呢?
      

  6.   

    这样吧,你可以尝试使用PHP的
    shmop
    来简单实现一个php级别的“连接池”
    使用pconnect来创建连接
    然后使用shmop来存储连接句柄
      

  7.   

    MYSQL没这么脆弱缓存查询结果是个好方法 同时推荐 缓存计算结果通常是HTML代码更直接的方法增加硬件投入 
      

  8.   

    sock 连接,属于稀缺 resource,需优化管理
    1 使用工厂和单例进行管理
    2 使用缓存机制
    3 使用 proxy server
    4 分库分表,分组业务,软 hash
    5 数据操作特性分析,优化数据结构,优化表结构
    6 业务同步,数据异步处理
    7 建立分级分布持久层,部分内存操作,保证一定 Cache 命中率
    暂写这么多,供参考。