Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP与mod_-dbd_Php_Mysql_Database_Connection Pooling - Fatal编程技术网

PHP与mod_-dbd

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模块,那么它是预编译并

有人知道使用mod_dbd进行数据库连接的PHP扩展吗

我们的应用程序需要访问远程数据库。它曾经是一个Apache模块,使用mod_dbd进行数据库连接,事务处理大约需要200毫秒。现在我们将应用程序更改为PHP,同一事务现在需要600毫秒。我们希望某种类型的池将提高性能


我们改用了
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中启用它。