使用php auto_append_file
自动添加的风险是什么:
session_write_close();
mysql_close();
到所有文件?
在处理客户的应用程序时,我发现会话和数据库连接由于某种原因而悬空。作为快速解决方案,我们通过auto_append_file
添加了上面的代码。
这立即解决了Apache线程处于“发送回复”状态并大大减少服务器负载的问题。
当客户缺乏足够的资源或时间来查找有问题的代码并修复它时,我们正在考虑更频繁地使用这种技术。
修改
问题不在于最佳做法。我完全理解这个应该不是必需的,但我可以通过添加此代码重复显示挂起的Apache进程的减少。问题是这些功能导致的风险或负面影响。
答案 0 :(得分:0)
正如评论中所提到的,驱动程序应该关闭连接,并且在脚本执行结束时会写入和关闭会话。
另外,你应该使用mysqli或PDO,而不是mysql! (MySQL extension is deprecated as of PHP 5.5.0)
无论如何,当你想要做那种事情(在脚本末尾执行某些事情)时,更好的想法是注册一个关闭函数来执行它(DRY):
http://www.php.net//manual/en/function.register-shutdown-function.php
(更好的方法是跟踪你正在使用的资源,并在你知道你的程序不再需要它们的时候释放它们。它更有效率,并且不会留下任何资源。怀疑他们发生了什么。)
答案 1 :(得分:0)
来自session_write_close()
的{{1}}:
会话数据通常在脚本终止后存储,无需调用session_write_close(),但由于会话数据被锁定以防止并发写入,因此任何时候只有一个脚本可以在会话上运行。
the documentation来自mysql_close()
:
通常不需要使用mysql_close(),因为非持久性开放链接会在脚本执行结束时自动关闭。另见the documentation。
还值得注意的是mysql_close()
,没有使用链接标识符......
如果未指定链接标识符,则假定mysql_connect()打开最后一个链接。如果未找到或建立连接,则会生成E_WARNING级别错误。
牢记以上所有内容:
mysql_close()
只会a)关闭最近打开的链接或b)抛出警告,因为没有打开任何链接。auto_append_file
因为第1点而无法帮助您。您需要自己修改脚本。