是否可以使用MySQL C应用编程接口like those PHP provides获得持久连接?如果是这样的话,是怎么做的?
发布于 2013-02-10 05:51:42
MySQL C应用编程接口没有持久连接功能,因为它不需要它。您通过它创建的所有连接都是持久的。也就是说,只要您的程序运行,它们就会一直存在,除非您主动关闭它们或服务器删除它们。
PHP需要持久连接的唯一原因是它是HTTP工作方式的产物。PHP最初是一个CGI program,因此web服务器会为每个HTTP请求重启所有内容,包括任何数据库连接。这非常耗时,所以他们创建了mod_php,现在几乎每个使用PHP的人都在使用它。HTTP的无状态特性仍然要求您的PHP脚本在每次请求时重新启动,但是因为mod_php在Apache实例中保持加载,所以它可以执行诸如保持MySQL DB连接打开之类的操作,以供需要它的下一个PHP脚本使用。
所有这些都回避了一个问题,为什么您认为您需要持久的DB连接?您是否在每次需要C程序时都重新启动它?如果是这样的话,修复它可能就是你需要做的,而不是寻找“缺失的”C API特性。例如,如果你用C语言编写web应用程序,你可以使用rework it as an Apache module,就像独立的CGI PHP变成mod_php一样。
但是,一定要记住:
"The First Rule of Program Optimization:不要这样做。程序优化的第二条规则(仅限专家!):不要这么做。“
-迈克尔·A·杰克逊
在你使用benchmarked和profiled之前进行优化你的程序是愚蠢的。向我们展示您的设计和尺寸,然后询问可以做些什么。不要一开始就要求技术修复。一个设计修复可能会有更多帮助。
发布于 2013-02-10 05:36:00
当然--通过不关闭连接。PHP“持久连接”所做的就是保持连接打开,并在随后的脚本执行中重用它。
https://stackoverflow.com/questions/14742932
复制相似问题