长连接是close不掉的,只有达到my.cnf中wait_timeout或interactive_timeout所设置的时间才会自动close,所以不建议使用长连接。 你的需求描述有些矛盾,既不想让它一直连接着,又希望每次都使用同一个连接。短连接模式下,PHP的一个脚本结束后就会释放当前连接,释放后再想连接肯定是要重新去握手。 我想你要表达的可能是在多个线程同时连接数据库时,只使用同一个连接,而非再去单独建立连接,也就是说,PHP时时刻刻都与MYSQL只存在一个连接。那么你应该去看看单例模式。避免建立多余的连接对象。大概意思是:IF 存在数据库连接 使用现有连接对象 ELSE 建立数据库连接对象 END IF
IF 存在数据库连接 使用现有连接对象 ELSE 建立数据库连接对象 END IF 就是这个意思, 看了下执行时间,每次都去连接,mysql_close() ,连接这段花了我一些时间,差不多400多毫秒, 使用了mysql_pconnect,第一次花了500多毫秒,刷新时,连接这块的时间降到200毫秒以下, 看了这么多讨论,在刷新的时候,如果使用mysql_connect是没办法保留下,上一次的连接的
mysql_pconnect 占资源太多,也容易出现连接数过多
你的需求描述有些矛盾,既不想让它一直连接着,又希望每次都使用同一个连接。短连接模式下,PHP的一个脚本结束后就会释放当前连接,释放后再想连接肯定是要重新去握手。
我想你要表达的可能是在多个线程同时连接数据库时,只使用同一个连接,而非再去单独建立连接,也就是说,PHP时时刻刻都与MYSQL只存在一个连接。那么你应该去看看单例模式。避免建立多余的连接对象。大概意思是:IF 存在数据库连接
使用现有连接对象
ELSE
建立数据库连接对象
END IF
使用现有连接对象
ELSE
建立数据库连接对象
END IF
就是这个意思,
看了下执行时间,每次都去连接,mysql_close() ,连接这段花了我一些时间,差不多400多毫秒,
使用了mysql_pconnect,第一次花了500多毫秒,刷新时,连接这块的时间降到200毫秒以下,
看了这么多讨论,在刷新的时候,如果使用mysql_connect是没办法保留下,上一次的连接的
ShadowSniper 回答,完全正确