我正在将应用程序从 php 移植到 fastcgi (c)。我的主机运行 apache。
由于 fastcgi 应用程序将循环运行,因此我可以打开一个 mysql 连接,并为所有传入请求保持打开状态。这是推荐的吗?
我想我读过同样数量的意见,说连接比请求贵得多,而且它应该是持久的,另一方面,人们声称打开的连接是一种资源消耗,每次都应该关闭。
其中哪一项在我的上下文中是正确的?
我不想说出如此明显的答案,但是……您是否尝试过两种方法并进行了比较?将 connect() 更改为 pconnect() 并尝试使用这两种方法非常容易。做一些分析,尤其是在负载下,看看什么最适合你的硬件和软件组合。
在高流量站点上,有时您无法让您的数据库接受足够的连接以允许持久性工作,但一般来说,持久性连接往往更有效。
这很大程度上取决于您的设置。MySql 建立连接的速度是出了名的快;你可以说它是为此而设计的。如果数据库与 Web 服务器在同一台机器上,那么它真的很快。您必须权衡这与保持连接活动所增加的复杂性。如果每个脚本都创建一个新连接,则行为不端的脚本无法关闭其他脚本。还需要考虑每个连接状态等问题。因此,根据经验,我会说除非您已将连接确定为性能瓶颈,否则不要尝试对其进行优化。
我会说,如果您始终有至少 10-20 人使用您的网站,那么持久连接效果最好。没有什么是矫枉过正