PHP开发中的资源管理与PDF生成技巧
1. 资源释放与持久数据库连接的风险
在使用像MySQL数据库连接这样的资源时,当你不再需要它,但脚本还需继续执行其他任务,应该及时释放资源,关闭数据库连接,而不是一直占用。
持久数据库连接(如mysql_pconnect()创建的连接)有时被认为可以提升性能。因为首次建立连接后,创建连接的httpd进程在脚本结束后仍会保留该连接,以便下次运行需要数据库连接的脚本时使用。由于连接数据库需要一定的开销,持久连接可能会节省一些时间。然而,在节省的时间变得显著之前,可能会出现问题。
问题在于,即使连接的httpd进程处于请求间隔状态,它仍然会保持数据库连接打开,直到服务器强制关闭该进程。数据库连接数量是有限的,mysql_close()对持久连接无效。当系统繁忙时,脚本尝试连接数据库可能会收到错误消息,提示已达到最大允许连接数。如果所有连接都在使用中,这可能只是需要对数据库服务器进行一些升级。但如果是因为空闲的httpd进程占用了可用连接,以应对可能的请求,这就不太理想了。
2. 输出缓冲与压缩
如果你打算使用输出缓冲来批量处理页面输出,使用ob_start('ob_gzhandler')启动缓冲,当你收集缓冲输出时,会发现它已被压缩。回调函数会检查请求头,确保接收输出的浏览器能够读取gzip压缩数据。
作为使用此回调处理程序的替代方法(不要同时使用),可以考虑在ph