是否可以与MySQL C API like those PHP provides建立持久连接?如果是这样,怎么样?
答案 0 :(得分:3)
MySQL C API没有持久连接功能,因为它不需要它。您通过它创建的所有连接都是持久的。也就是说,只要您的程序运行,它们就会持续存在,除非您主动关闭它们或服务器丢弃它们。
PHP需要持久连接的唯一原因是它是HTTP工作方式的工件。 PHP最初是CGI program,因此Web服务器将为每个HTTP请求重启所有,包括任何数据库连接。这非常耗时,因此他们创建了mod_php,几乎所有使用PHP的人都使用它。 HTTP的无状态特性仍然要求您的PHP脚本在每个请求上重新启动,但由于mod_php在Apache实例中保持加载状态,因此它可以执行诸如保持MySQL数据库连接打开之类的操作,供下一个需要它的PHP脚本使用。
所有这些都引出了一个问题,为什么你认为你需要持久的数据库连接?您是否每次需要时重新启动C程序?如果是这样,那么修复可能就是你需要做的而不是寻找“缺失”的C API特性。例如,如果您使用C编写Web应用程序,则可以rework it as an Apache module,就像独立的CGI PHP成为mod_php一样。
但是,永远记住:
“The First Rule of Program Optimization:不要这样做。程序优化的第二条规则(仅限专家!):不要这样做。”
- Michael A. Jackson
在您benchmarked和profiled之前优化您的计划是愚蠢的。向我们展示您的设计和测量结果,然后询问可以做些什么。不要先要求技术修复。设计修复可能会有很多帮助。
答案 1 :(得分:2)
当然 - 没有关闭连接。 PHP的“持久连接”所做的就是保持连接打开,并将其重用于后续脚本执行。