to Gdj(陈水.智商只有129.非卖品)
 
   那么PConnect是干什么用的?连接数据库要经过两个步骤:
1、建立到数据库服务器的网络连接
2、建立到数据库的用户连接第2步的连接是用完就切断的
而第一步的连接在PConnect时是不切断的,这样下次连接时可以直接建立用户连接,而省去网络连接  
 

解决方案 »

  1.   

    楼主是用Application_OnStart实现的吧……
    永久连接也是有它的优点和缺点的。也不能一棒打死。不过pconnect -- Open persistent SQL connection
    就是打开一个永远连接吧。不知楼主说的不是那么一回事指的是什么?
      

  2.   

    我看手册pconnect是整个进程共用的吧,并不会因为页面退出而关闭。php又是单进程的东西。这不是永久连接是什么?
      

  3.   

    是啊,好像手册中说,pconncet就是只要发现同一台主机,同一个用户名再次连接,就使用以前的连接。这好像说,不能为每一个session建立一次连接,而是所有的页面使用同一个连接。不太理解,觉得这好像是为C/S开发准备的东西,对Web开发应该没有用处的。另外,ASP中的这个文件的确每一个页面都会触发,但是Session_OnStart只是在每个Session开始的时候触发,其实看看这个名字就知道,不会是每一个页面都触发的。
      

  4.   

    如果你不是做c/s类似的东西。一般的网页还是走传统路线吧。想想象你原来的做法,生成一个session就会生成一个15分钟连接(iis默认15分钟吧),即使对方只登录上来看个东西就走。
      

  5.   

    可以在Session_OnEnd里面关闭连接的,用不了15分钟的。
      

  6.   

    “但是Session_OnStart只是在每个Session开始的时候触发,其实看看这个名字就知道,不会是每一个页面都触发的。”呵呵!如果“不会是每一个页面都触发的”,那么把连接放在里面有什么用呢?连session变量都访问布到!
      

  7.   

    1.pconnect就是给所有页面共享的连接,这样可以省去很多连接数据库的时间,有什么问题吗?连接数据库的方式大家都是一样的,不需要区别对待。
    2.ASP的session实现机制跟PHP基本差不多,但是还有一些差别:
    Session_OnStart 对应的是 PHP的session_start(),但是PHP没有提供回调函数供开发者在session刚建立的时候做一些初始化工作。ASP里Session对象是内建对象,不需要session start,而且该对象一直缓存着(超时或者退出销毁),所以Session_OnStart在一次session连接只会调用一次,应该是在对象的构造函数里调用的,当然给session变量赋初值也是可以的。
      

  8.   

    楼上对ASP的讲解俺非常赞同。Session_OnStart在一次session连接只会调用一次,而且Session变量是完全可以访问的。可是俺仔细看了手册中“数据库永久连接”这一章:永久的数据库连接是指在您的脚本结束运行时不关闭的连接。当收到一个永久连接的请求时。PHP 将检查是否已经存在一个(前面已经开启的)相同的永久连接。如果存在,将直接使用这个连接;如果不存在,则建立一个新的连接。所谓“相同”的连接是指用相同的用户名和密码到相同主机的连接。 因为每个网页都是使用相同的用户名和密码,那是否所有网页都使用同一个持久连接?那么在网页访问量很大的情况下,只使用一个连接会不会出现效率问题?
      

  9.   

    “Session_OnStart在一次session连接只会调用一次”
    是的,的确是这样。在php中session_start()也是这样。
    尽管两者的处理方式不一样:
    php需要显式的启动session,而asp是在执行到操作session变量的时候触发Session_OnStart事件问题在于“一次session连接”指的是什么?这是楼主需要认真思考的!关于“永久连接”
    前面我已经说的很明白了,所谓“永久连接”是指维持到数据库服务器的网络连接,即一个tcp/ip通道。由于这个通道的存在,以后的数据库连接就有可能直接使用了。
    那是否所有网页都使用同一个持久连接?
    这是根据情况来决定的,php首先检查是否存在有空闲的网络连接,如果有则使用。如果没有就新建一个连接。而用户连接无论你是否显式的关闭都是要在程序结束时关闭的,因为这涉及到安全问题
      

  10.   

    支持xuzuning(唠叨) 的解释
    “一次session连接”应该不是指所有页面访问只存在一次session链接
    而应该是只要存在session访问的页面均会在该页做一次session链接
      

  11.   

    我觉得这个论坛能解决你的问题http://www.bigchinatech.com/bbs/
    刚刚建好的,顺便发几帖啦
      

  12.   

    小辉同学,请不要用灌水机。通常开发php中,对连接的做法一般是建立一个global文件,里面存放连接参数。
    你可以在里面写好一个连接的函数。以后使用时就直接调。关于访问量的问题,和数据库连接应该关系不大吧。