Bug #53000 [NEW]: MSSQL slow on large resultsets via Apache module
| From: | steven at aubergine-it dot nl | Date: | Wed, 06 Oct 2010 09:49:41 +0000 |
| Subject: | Bug #53000 [NEW]: MSSQL slow on large resultsets via Apache module | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-154943@lists.php.net to get a copy of this message | ||
From:
Operating system: Linux
PHP version: 5.3.3
Package: MSSQL related
Bug Type: Bug
Bug description:MSSQL slow on large resultsets via Apache module
Description:
------------
Hi there,
After a lot of research I found a serious performance problem. I think the
attached test script is self explaining.
So basically the performance is dramatically worse if I use PHP as module
in comparison with the PHP cli. CentOS does not have a different php.ini
for the Apache module and cli version.
I found a similar bug 28610, and I tried the proposed solution. But output
buffering is already turned on.
*setup*
I use PHP 5.3.3, installed at CentOS via http://iuscommunity.org/. They use
this configure line:
'./configure' '--build=x86_64-redhat-linux-gnu'
'--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu'
'--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr'
'--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc'
'--datadir=/usr/share' '--includedir=/usr/include'
'--libdir=/usr/lib64'
'--libexecdir=/usr/libexec' '--localstatedir=/var'
'--sharedstatedir=/usr/com' '--mandir=/usr/share/man'
'--infodir=/usr/share/info' '--cache-file=../config.cache'
'--with-libdir=lib64' '--with-config-file-path=/etc'
'--with-config-file-scan-dir=/etc/php.d' '--disable-debug'
'--with-pic'
'--disable-rpath' '--without-pear' '--with-bz2'
'--with-exec-dir=/usr/bin'
'--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-xpm-dir=/usr'
'--enable-gd-native-ttf' '--with-t1lib=/usr' '--without-gdbm'
'--with-gettext' '--with-gmp' '--with-iconv'
'--with-jpeg-dir=/usr'
'--with-openssl' '--with-pcre-regex=/usr' '--with-zlib'
'--with-layout=GNU'
'--enable-exif' '--enable-ftp' '--enable-magic-quotes'
'--enable-sockets'
'--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg'
'--with-kerberos'
'--enable-ucd-snmp-hack' '--enable-shmop' '--enable-calendar'
'--without-mime-magic' '--without-sqlite' '--with-libxml-dir=/usr'
'--with-xml' '--with-system-tzdata' '--with-apxs2=/usr/sbin/apxs'
'--without-mysql' '--without-gd' '--disable-dom'
'--disable-dba'
'--without-unixODBC' '--disable-pdo' '--disable-xmlreader'
'--disable-xmlwriter' '--without-sqlite3' '--disable-phar'
'--disable-fileinfo' '--disable-json' '--without-pspell'
'--disable-wddx'
'--without-curl' '--disable-posix' '--disable-sysvmsg'
'--disable-sysvshm'
'--disable-sysvsem'
Test script:
---------------
<?
require_once('../inc/TPInit.inc.php');
$sql = "SELECT TOP 10 * FROM productVersions WHERE subCategoryID = 8;";
benchmark('sql', 'start');
$result = mssql_query($sql);
echo 'Small result set <br/>' . "\n";
echo 'Rows in returnset: ' . mssql_num_rows($result) . '<br/>' .
"\n";
echo 'Time: ' . benchmark('sql', 'show') . '<br/>' .
"\n";
$sql = "SELECT * FROM productVersions WHERE subCategoryID = 8;";
benchmark('sql', 'start');
$result = mssql_query($sql);
echo 'Large result set <br/>' . "\n";
echo 'Rows in returnset: ' . mssql_num_rows($result) . '<br/>' .
"\n";
echo 'Time: ' . benchmark('sql', 'show') . '<br/>' .
"\n";
Expected result:
----------------
Small result set
Rows in returnset: 10
Time: 0.0054750442504883
Large result set
Rows in returnset: 73782
Time: 34.852993011475
Actual result:
--------------
Small result set
Rows in returnset: 10
Time: 0.0027780532836914
Large result set
Rows in returnset: 73782
Time: 0.45695114135742
--
Edit bug report at http://bugs.php.net/bug.php?id=53000&edit=1
--
Try a snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=53000&r=trysnapshot52
Try a snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=53000&r=trysnapshot53
Try a snapshot (trunk): http://bugs.php.net/fix.php?id=53000&r=trysnapshottrunk
Fixed in SVN: http://bugs.php.net/fix.php?id=53000&r=fixed
Fixed in SVN and need be documented: http://bugs.php.net/fix.php?id=53000&r=needdocs
Fixed in release: http://bugs.php.net/fix.php?id=53000&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=53000&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=53000&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=53000&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=53000&r=support
Expected behavior: http://bugs.php.net/fix.php?id=53000&r=notwrong
Not enough info: http://bugs.php.net/fix.php?id=53000&r=notenoughinfo
Submitted twice: http://bugs.php.net/fix.php?id=53000&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=53000&r=globals
PHP 4 support discontinued: http://bugs.php.net/fix.php?id=53000&r=php4
Daylight Savings: http://bugs.php.net/fix.php?id=53000&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=53000&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=53000&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=53000&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=53000&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=53000&r=mysqlcfg