Edit report at https://bugs.php.net/bug.php?id=45942&edit=1
ID: 45942 Comment by: jhuckaby at gmail dot com Reported by: jhuckaby at gmail dot com Summary: D_FILE_OFFSET_BITS=64 causes PHP to run at half speed Status: Closed Type: Bug Package: Performance problem Operating System: Fedora Core 6 PHP Version: 5.2.6 Block user comment: N Private report: N New Comment: Just a follow-up note. I was wrong about closing the bug. This is still an open issue. When using AC_SYS_LARGEFILE, PHP still fails to write more than 2 GB to a file -- it just doesn't throw any kind of error. To this day, even with PHP 5.3.6, the only way to get true large file support seems to be adding the -D_FILE_OFFSET_BITS=64 compile flag, which still causes a 50% runtime performance penalty. Previous Comments: ------------------------------------------------------------------------ [2008-09-03 21:05:03] jhuckaby at gmail dot com This can be solved by using AC_SYS_LARGEFILE and a more modern operating system (tested with Mac OS X 10.5 and Fedora 9). Apparently Fedora Core 6 is too old to support the flag. I am closing this bug. ------------------------------------------------------------------------ [2008-08-29 21:30:35] jhuckaby at gmail dot com I should have also noted, this same error happens with 5.2.4 stable, 5.2.6 stable, and the CVS daily snapshot build for Aug 29, 2008. ------------------------------------------------------------------------ [2008-08-29 21:27:01] jhuckaby at gmail dot com Wait, I spoke too soon! Please don't close the bug yet. As soon as I removed the "--disable-all --disable-cgi" ./configure command-line options, I got this build error from the "make" step: /home/jhuckaby/dev/3rdparty/source/apache-1.3/php- 5.2.7/ext/posix/posix.c: In function 'zif_posix_uname': /home/jhuckaby/dev/3rdparty/source/apache-1.3/php- 5.2.7/ext/posix/posix.c:471: error: 'struct utsname' has no member named 'domainname' make: *** [ext/posix/posix.lo] Error 1 I didn't add any new command-line options, I simply removed the "-- disable-all --disable-cgi". ./configure --with-apache=../apache_1.3.39 --prefix=/ipix/php --with- config-file-path=/ipix/php/lib --disable-all --disable-cgi Any ideas? Should I file this under a separate bug? ------------------------------------------------------------------------ [2008-08-29 20:28:04] jhuckaby at gmail dot com Okay, I followed your instructions. I added AC_SYS_LARGEFILE to configure.in, then ran ./buildconf --force. Then I followed with ./configure..., make, and make install. I found the following output from ./configure of interest: checking for special C compiler options needed for large files... no checking for _FILE_OFFSET_BITS value needed for large files... unknown checking for _LARGE_FILES value needed for large files... unknown Anyway, it compiled clean and installed. And it seems to work correctly, writing >2GB large files without error AND the interpreter speed is fast! Thanks! [root@dev-ops php-5.2.6]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 310 [root@dev-ops php-5.2.6]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 311 [root@dev-ops php-5.2.6]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 312 [root@dev-ops php-5.2.6]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 306 [root@dev-ops php-5.2.6]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 311 I guess we can close this bug! ------------------------------------------------------------------------ [2008-08-29 19:03:20] crrodriguez at suse dot de You dont pass D_FILE_OFFSET_BITS=64 directly, but add AC_SYS_LARGEFILE to configure.in then run ./buildconf --force and rebuild PHP. BTW.. it is known that large file support may not work currenlty with PHP. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=45942 -- Edit this bug report at https://bugs.php.net/bug.php?id=45942&edit=1