2

是否有可能获得与 MySQL C API 的持久连接,就像那些 PHP 提供的那样?如果是这样,怎么做?

4

2 回答 2

3

MySQL C API 没有持久连接功能,因为它不需要它。您通过它创建的所有连接都是持久的。也就是说,只要您的程序运行,它们就会一直存在,除非您主动关闭它们或服务器丢弃它们。

PHP 需要持久连接的唯一原因是它是 HTTP 工作方式的产物。PHP 最初是一个CGI 程序,因此 Web 服务器会重新启动每个 HTTP 请求的所有内容,包括任何数据库连接。这非常耗时,因此他们创建了mod_php,现在几乎每个使用 PHP 的人都在使用它。HTTP 的无状态特性仍然要求您的 PHP 脚本在每次请求时重新启动,但由于 mod_php 保持加载在 Apache 实例中,它可以执行诸如保持 MySQL DB 连接打开之类的操作,以供下一个需要它的 PHP 脚本使用。

所有这些都引出了一个问题,为什么您认为您需要持久的数据库连接?您是否在每次需要时都重新启动您的 C 程序?如果是这样,修复它可能是您需要做的,而不是寻找“缺失”的 C API 功能。例如,如果您正在用 C 编写一个 Web 应用程序,您可以将其重新编写为 Apache 模块,就像独立的 CGI PHP 变成 mod_php 一样。

但是,永远记住:

程序优化的第一条规则:不要这样做。程序优化的第二条规则(仅供专家使用!):不要这样做。”

——迈克尔·杰克逊

在对程序进行基准测试分析之前进行优化是愚蠢的。向我们展示您的设计和测量结果,然后询问可以做什么。不要先要求技术修复。设计修复可能会有所帮助。

于 2013-02-09T21:51:41.920 回答
2

当然 - 通过不关闭连接。PHP 的“持久连接”所做的只是保持连接打开并将其重用于后续脚本执行。

于 2013-02-09T21:36:00.463 回答