PHP与mod_-dbd
有人知道使用mod_dbd进行数据库连接的PHP扩展吗 我们的应用程序需要访问远程数据库。它曾经是一个Apache模块,使用mod_dbd进行数据库连接,事务处理大约需要200毫秒。现在我们将应用程序更改为PHP,同一事务现在需要600毫秒。我们希望某种类型的池将提高性能PHP与mod_-dbd,php,mysql,database,connection-pooling,Php,Mysql,Database,Connection Pooling,有人知道使用mod_dbd进行数据库连接的PHP扩展吗 我们的应用程序需要访问远程数据库。它曾经是一个Apache模块,使用mod_dbd进行数据库连接,事务处理大约需要200毫秒。现在我们将应用程序更改为PHP,同一事务现在需要600毫秒。我们希望某种类型的池将提高性能 我们改用了mysql\u pconnect(),但它的性能不如mod\u dbd 我知道你可能已经放弃了答案,但是 我想您会发现,大部分额外的时间是加载和编译PHP脚本。如果您以前的应用程序是apache模块,那么它是预编译并
我们改用了
mysql\u pconnect()
,但它的性能不如mod\u dbd 我知道你可能已经放弃了答案,但是
我想您会发现,大部分额外的时间是加载和编译PHP脚本。如果您以前的应用程序是apache模块,那么它是预编译并始终加载的,与PHP相比,用c编写的速度可能非常快
尝试使用像eaccelerator这样的php加速器。它使用共享内存和预编译脚本有时可以显著提高PHP应用程序的性能
DC我知道你可能已经放弃了答案,但是 我想您会发现,大部分额外的时间是加载和编译PHP脚本。如果您以前的应用程序是apache模块,那么它是预编译并始终加载的,与PHP相比,用c编写的速度可能非常快 尝试使用像eaccelerator这样的php加速器。它使用共享内存和预编译脚本有时可以显著提高PHP应用程序的性能
DC为了从mod_dbd的连接池功能中获益,您需要运行线程化MPM,以便多个线程可以共享池中的连接。不幸的是,我相信PHP不是线程安全的,并且不支持线程化MPM
如果您将mod_dbd与pre-fork MPM一起使用(这不是线程化的,建议用于PHP),mod_dbd将创建一个持久数据库连接,与PHP中不使用mod_dbd的数据库连接相比,这并没有给您带来任何巨大的优势。为了从mod_dbd的连接池功能中获益,您需要运行线程化MPM,以便多个线程可以共享池中的连接。不幸的是,我相信PHP不是线程安全的,并且不支持线程化MPM
如果您将mod_dbd与pre-fork MPM一起使用(这不是线程化的,建议用于PHP),mod_dbd将创建一个持久数据库连接,与不使用mod_dbd的PHP中的数据库连接相比,这并没有给您带来任何巨大的优势。我们知道PHP加载/编译时间不是决定因素,因为我们只看到没有DB访问的其他事务只增加了几毫秒。我对此感到惊讶。您是否做了一些分析以确定时间损失的确切位置。数据库可能同时发生了变化,或者sql查询现在不同了?如果表示未使用索引或使用了错误的索引,则即使是细微的差异也可能导致问题。mysql\u pconnect通常不如您所希望的那样工作。我一直认为php最好使用池连接。但是pconnect是一个进程连接。如果您不知道的话,还需要在php.ini中启用它。我们知道php加载/编译时间不是决定因素,因为我们只看到其他事务在没有DB访问的情况下增加了几毫秒。我对此感到惊讶。您是否做了一些分析以确定时间损失的确切位置。数据库可能同时发生了变化,或者sql查询现在不同了?如果表示未使用索引或使用了错误的索引,则即使是细微的差异也可能导致问题。mysql\u pconnect通常不如您所希望的那样工作。我一直认为php最好使用池连接。但是pconnect是一个进程连接。如果您不知道,还需要在php.ini中启用它。