Bug #73265 [Com]: PHP7 dramatically slower in some cases

From: Date: Thu, 15 Dec 2016 12:04:51 +0000
Subject: Bug #73265 [Com]: PHP7 dramatically slower in some cases
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-206035@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=73265&edit=1 ID: 73265 Comment by: spam2 at rhsoft dot net Reported by: spam2 at rhsoft dot net Summary: PHP7 dramatically slower in some cases Status: Open Type: Bug Package: Performance problem Operating System: Linux PHP Version: 7.0.14 Block user comment: N Private report: N New Comment: ; [browscap] ; browscap = "/etc/php/browscap.ini" and the memory usage goes down that is the one from the servers and i think with that and my whole config in the last comment you should have a fine reproducer - will remove that from all machines now http://access.thelounge.net/harry/browscap.ini.txt Previous Comments: ------------------------------------------------------------------------ [2016-12-15 11:41:13] spam2 at rhsoft dot net since i have one instance with a normal memory usage maybe it depends on some specific part of my php.ini and you could even reprodcue the behavior with it easily on your machine? [root@testserver:~]$ cat /etc/php.ini [PHP] default_charset = "ISO-8859-1" zend.enable_gc = 0 zend.detect_unicode = 0 register_argc_argv = 0 register_globals = 0 always_populate_raw_post_data = -1 upload_tmp_dir = "/var/www/uploadtemp" open_basedir = "" include_path = ".:/www/phpincludes:/usr/share/pear:/usr/share/php:/usr/share/php/php-reader" error_log = "/Volumes/dune/www-servers/_logs/php_error.log" zlib.output_compression = 0 zlib.output_compression_level = 4 max_execution_time = 120 max_input_time = 120 max_input_nesting_level = 32 memory_limit = "-1" post_max_size = "100M" upload_max_filesize = "100M" file_uploads = 1 max_file_uploads = 30 allow_url_fopen = 1 allow_url_include = 0 realpath_cache_size = 64K realpath_cache_ttl = 300 error_reporting = E_ALL docref_root = "http://at.php.net/manual/de/" docref_ext = ".php" disable_functions = "" disable_classes = "" engine = 1 short_open_tag = 1 asp_tags = 0 y2k_compliance = 1 output_buffering = 0 output_handler = "" implicit_flush = 0 expose_php = 0 display_errors = 1 display_startup_errors = 1 log_errors = 1 log_errors_max_len = 2048 html_errors = 0 track_errors = 0 warn_plus_overloading = 1 enable_dl = 0 cgi.force_redirect = 0 cgi.rfc2616_headers = 0 fastcgi.impersonate = 1 ignore_repeated_errors = 0 ignore_repeated_source = 0 arg_separator.output = "&amp;" arg_separator.input = "&" variables_order = "EGPCS" default_mimetype = "text/html" default_socket_timeout = 10 auto_detect_line_endings = 0 unserialize_callback_func = "" precision = 14 serialize_precision = 17 user_agent = "PHP" gd.jpeg_ignore_warning = 1 highlight.string = "#dd0000" highlight.comment = "#ff8000" highlight.keyword = "#007700" highlight.bg = "#ffffff" highlight.default = "#0000bb" highlight.html = "#000000" error_prepend_string = "" error_append_string = "" auto_prepend_file = "" auto_append_file = "" [Session] session.save_path = "/var/www/sessiondata" session.save_handler = "files" session.use_cookies = 1 session.use_only_cookies = 1 session.use_strict_mode = 1 session.name = "LOUNGE_ID" session.referer_check = "" session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = "/" session.cookie_domain = "" session.cookie_secure = 0 session.cookie_httponly = 1 session.serialize_handler = "php" session.gc_probability = 0 session.entropy_file = "/dev/urandom" session.entropy_length = 16 session.cache_limiter = "nocache" session.cache_expire = 180 session.use_trans_sid = 0 session.bug_compat_42 = 0 session.bug_compat_warn = 0 session.hash_function = 1 session.hash_bits_per_character = 6 session.upload_progress.enabled = 1 session.lazy_write = 1 session.sid_bits_per_character = 5 session.sid_length = 40 url_rewriter.tags = "disabled" [MySQLI] mysqli.default_host = "localhost" mysqli.default_port = 3306 mysqli.default_socket = "/var/lib/mysql/mysql.sock" mysqli.default_user = "" mysqli.default_password = "" mysqli.reconnect = 1 mysqli.max_links = 300 [mysqlnd] mysqlnd.collect_statistics = 0 mysqlnd.collect_memory_statistics = 0 mysqlnd.debug = 0 mysqlnd.net_read_timeout = 60 pdo_mysql.default_socket = /var/lib/mysql/mysql.sock [Assertion] assert.active = 0 assert.quiet_eval = 0 [Sockets] sockets.use_system_read = 1 [bcmath] bcmath.scale = 20 [soap] soap.wsdl_cache_enabled = 1 soap.wsdl_cache_dir = "/var/www/uploadtemp" soap.wsdl_cache_ttl = 5 [mbstring] mbstring.language = "German" mbstring.internal_encoding = "ISO-8859-1" mbstring.http_input = "auto" mbstring.encoding_translation = 0 mbstring.detect_order = "auto" mbstring.func_overload = 0 [Date] date.timezone = "Europe/Vienna" [browscap] browscap = "/etc/php/browscap.ini" ------------------------------------------------------------------------ [2016-12-15 11:34:22] spam2 at rhsoft dot net yeah i saw the repeatet ini stuff too and though "WTF when the script is already running" - the difference is 100 MB versus 10 MB memory usage root 26262 0.0 0.1 44020 10256 pts/1 S<+ 12:30 0:00 /usr/bin/php -n /usr/local/bin/check-dbmail-service.php 20143 dbmail-imapd root 26267 5.2 1.7 277092 105008 pts/1 S<+ 12:30 0:00 /usr/bin/php /usr/local/bin/check-dbmail-service.php 20143 dbmail-imapd P.S: that's 7.1.0 since my testserver which is currently running 7.1 to test our software against but the behavior auf 7.0.14 is pretty identical ------------------------------------------------------------------------ [2016-12-15 11:25:43] nikic@php.net Unfortunately, the massif profile is missing lots of symbols. If possible, can you rerun this with complete debug symbols? Assuming this is not just an artifact of broken symbols, the profile does show that most of the memory usage seems to come from zend_parse_ini_file(), which would be very unusual. (This could also explain why you're seeing a difference in 7.0.14, because there were some changes to the ini parser.) Can you please check whether running PHP without ini (-n) changes the situation? ------------------------------------------------------------------------ [2016-12-15 10:20:42] spam2 at rhsoft dot net extensions are also out of question - the tiny leeop-script from comment [2016-12-15 00:24 UTC] consumes 90 MB resident memory sceonds after start with all loadablke modules disabled [root@testserver:~]$ php -m [PHP Modules] bz2 Core date filter libxml mysqlnd pcre readline Reflection SPL standard xml zlib [root@testserver:~]$ ps aux | grep php dbmail 13097 0.5 1.4 128576 91064 ? SNs 11:17 0:00 /usr/bin/php /usr/local/bin/check-dbmail-service.php 20143 dbmail-imapd ------------------------------------------------------------------------ [2016-12-15 01:48:06] spam2 at rhsoft dot net no it won't - the binary is already compiled with --disable-huge-code-pages and keep in mind that this script is CLI, that setting affects opcode and as you can see in my previous comments for CLI opcache is even not loaded at all since the webservers have their own "php.ini" with PHPIniDir in the httpd.conf you have the whole script in my comment from [2016-12-15 00:24 UTC] and there is no sane reason to allocate 100 MB memory for that with some luck the php.spec makes it to that comment _________________ %global dist .fc%fedora.%(echo $(/usr/bin/date +%Y%m%d.%H%M)).rh %global phpver 7 %global runselftest 1 %global pgo_build 1 %global lto_build 0 %global break_build 0 %global debug_build 0 %global extension_dir %{_libdir}/%{name}/modules # macro 'php_debug_build' is global and re-used for pecl-builds linked against # system updated with a php debug-build while 'debug_build' is local and # allows to be combined with 'break_build' to generate temporary debug builds # without installing them - both implicit disable 'pgo_build' and 'lto_build' %if %php_debug_build %global _include_minidebuginfo 1 %global RH_GCC_DEBUG_OPTION "-g3" %global RH_CONFIGURE_DEBUG_OPTION "enable-debug" %global RH_STRIP_BINARY 0 %global pgo_build 0 %global lto_build 0 %else %if %debug_build %global _include_minidebuginfo 1 %global RH_GCC_DEBUG_OPTION "-g3" %global RH_CONFIGURE_DEBUG_OPTION "enable-debug" %global RH_STRIP_BINARY 0 %global pgo_build 0 %global lto_build 0 %else %global _include_minidebuginfo 0 %global RH_GCC_DEBUG_OPTION "-g0" %global RH_CONFIGURE_DEBUG_OPTION "disable-debug" %global RH_STRIP_BINARY 1 %endif %endif # link-time-optimization needs '--disable-gcc-global-regs' for configure %if %lto_build %global RH_LTO_CONFIGURE_OPTION "disable-gcc-global-regs" %else %global RH_LTO_CONFIGURE_OPTION "enable-gcc-global-regs" %endif Summary: PHP Scripting Language Name: php Version: 7.0.14 Release: 1%{?dist} License: PHP/Zend/BSD Group: Development/Languages URL: http://www.php.net/ Source0: http://www.php.net/distributions/php-%{version}.tar.xz Source1: opcache-zendoptimizer.php Source2: php-httpd-dummy.conf Source3: php-disabled-autotests.txt Source4: php-test-dirs.txt Source5: php-debug.ini Patch1: %{name}-dlopen.patch Patch2: %{name}-realpath-cache-openbasedir.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: binutils BuildRequires: bison BuildRequires: bzip2-devel BuildRequires: curl-devel BuildRequires: cyrus-sasl-devel BuildRequires: freetype-devel BuildRequires: gcc-c++ BuildRequires: gd-devel BuildRequires: gettext-devel BuildRequires: httpd-devel BuildRequires: krb5-devel BuildRequires: libc-client-devel BuildRequires: libedit-devel BuildRequires: libjpeg-turbo-devel BuildRequires: libpng-devel BuildRequires: libstdc++-devel BuildRequires: libtidy-devel BuildRequires: libtool-ltdl-devel BuildRequires: libxml2-devel BuildRequires: libzip-devel BuildRequires: openssl-devel BuildRequires: pam-devel BuildRequires: pcre-devel BuildRequires: perl BuildRequires: postfix BuildRequires: re2c BuildRequires: zlib-devel Provides: mod_%{name} Requires: %{name}-common %description PHP Scripting Language %package common Summary: common files %package cli Summary: command-line interface for php Requires: %{name}-common Provides: %{name}-cgi, %{name}-readline %package devel Summary: files needed for building extensions Requires: autoconf, automake, pcre-devel, re2c, %{name}-cli %package bcmath Summary: bcmath %package calendar Summary: calendar %package ctype Summary: ctype %package curl Summary: curl %package dom Summary: dom %package exif Summary: exif %package fileinfo Summary: fileinfo %package gd Summary: gd %package gettext Summary: gettext %package hash Summary: hash %package iconv Summary: iconv %package imap Summary: imap %package json Summary: json %package mbstring Summary: mbstring %package mysqli Summary: mysqli %package opcache Summary: opcache %package openssl Summary: openssl %package pcntl Summary: pcntl %package pdo Summary: pdo %package phar Summary: phar %package posix Summary: posix %package session Summary: session %package simplexml Summary: simplexml %package soap Summary: soap %package sockets Summary: socket %package tidy Summary: tidy %package tokenizer Summary: tokenizer %package xmlreader Summary: xmlreader %package xmlwriter Summary: xmlwriter %package zip Summary: zip # https://bugzilla.redhat.com/show_bug.cgi?id=1371549 %description bcmath %description calendar %description cli %description common %description ctype %description curl %description devel %description dom %description exif %description fileinfo %description gd %description gettext %description hash %description iconv %description imap %description json %description mbstring %description mysqli %description opcache %description openssl %description pcntl %description pdo %description phar %description posix %description session %description simplexml %description soap %description sockets %description tidy %description tokenizer %description xmlreader %description xmlwriter %description zip %prep %setup -q -n php-%{version} %patch1 -p1 %patch2 -p1 # drop windows specific headers and fix bogus permissions rm -f TSRM/tsrm_win32.h TSRM/tsrm_config.w32.h Zend/zend_config.w32.h ext/mysqlnd/config-win.h ext/standard/winver.h main/win32_internal_function_disabled.h main/win95nt.h find . -name \*.[ch] -exec chmod 644 {} \; # delete known failing or skipped tests %if %runselftest xargs rm -f < %{SOURCE3} %else xargs rm -rf < %{SOURCE4} %endif %build # force use of system libtool and regenerate configure scripts libtoolize --force --copy --quiet cat aclocal --print-ac-dir/{libtool,ltoptions,ltsugar,ltversion,lt~obsolete}.m4 > build/libtool.m4 touch configure.in ./buildconf --force # compiler and linker flags %if %lto_build RH_LTO_FLAGS="-flto -fno-fat-lto-objects -fuse-ld=gold -fuse-linker-plugin" %else RH_LTO_FLAGS="-fno-lto -fuse-ld=gold -fuse-linker-plugin" %endif export LOCAL_CFLAGS="-O3 %{RH_GCC_DEBUG_OPTION} -fstack-protector-strong --param=ssp-buffer-size=8 -fipa-pta -fira-loop-pressure -fivopts -fmerge-all-constants -fsemantic-interposition -ftree-loop-distribution -ftree-loop-if-convert -ftree-loop-if-convert-stores -ftree-loop-ivcanon -fvect-cost-model=unlimited -fwrapv -minline-all-stringops -fno-align-labels -fno-exceptions -fno-gcse -fno-math-errno -fno-strict-aliasing -Wno-pointer-sign -Wno-stack-protector $RH_LTO_FLAGS -Wa,--noexecstack" export CFLAGS="%{optflags} $LOCAL_CFLAGS" export CC="gcc $CFLAGS" export CXXFLAGS="$CFLAGS" export SH_LDFLAGS="-Wl,--as-needed -Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -Wl,-z,nodump $CFLAGS" export LDFLAGS="$SH_LDFLAGS -pie -fPIE" # define extension directory export EXTENSION_DIR=%{extension_dir} # configure build process ./configure --quiet \ --host=x86_64-redhat-linux \ --build=x86_64-redhat-linux \ --target=x86_64-redhat-linux \ --prefix=%{_prefix} \ --program-prefix= \ --libdir=%{_libdir}/%{name} \ --disable-all \ --enable-bcmath=shared \ --enable-calendar=shared \ --enable-cli \ --enable-ctype=shared \ --enable-dom=shared \ --enable-exif=shared \ --enable-fileinfo=shared \ --enable-filter \ --enable-gd-native-ttf \ --enable-hash=shared \ --enable-inline-optimization \ --enable-json=shared \ --enable-libxml \ --enable-mbregex \ --enable-mbstring=shared \ --enable-mysqlnd \ --enable-opcache=shared \ --enable-pcntl=shared \ --enable-pdo=shared \ --enable-phar=shared \ --enable-posix=shared \ --enable-re2c-cgoto \ --enable-session=shared \ --enable-shared \ --enable-simplexml=shared \ --enable-soap=shared \ --enable-sockets=shared \ --enable-tokenizer=shared \ --enable-xml \ --enable-xmlreader=shared \ --enable-xmlwriter=shared \ --enable-zip=shared \ --with-apxs2=%{_bindir}/apxs \ --with-bz2=%{_prefix} \ --with-config-file-path=%{_sysconfdir} \ --with-config-file-scan-dir=%{_sysconfdir}/%{name}.lounge.d \ --with-curl=shared,%{_prefix} \ --with-freetype-dir=%{_prefix} \ --with-gd=shared,%{_prefix} \ --with-gettext=shared,%{_prefix} \ --with-iconv=shared \ --with-imap-ssl=%{_prefix} \ --with-imap=shared,%{_prefix} \ --with-kerberos=%{_prefix} \ --with-layout=GNU \ --with-libdir=%{_lib} \ --with-libedit=%{_prefix} \ --with-libxml-dir=%{_prefix} \ --with-libzip=%{_prefix} \ --with-mysql-sock=%{_sharedstatedir}/mysql/mysql.sock \ --with-mysqli=shared,mysqlnd \ --with-openssl=shared,%{_prefix} \ --with-pcre-regex=%{_prefix} \ --with-pcre-jit \ --with-pdo-mysql=shared,mysqlnd \ --with-pic \ --with-system-ciphers \ --with-tidy=shared,%{_prefix} \ --with-zlib \ --with-zlib-dir=%{_prefix} \ --disable-cgi \ --disable-dmalloc \ --disable-dtrace \ --disable-gcov \ --disable-gd-jis-conv \ --disable-huge-code-pages \ --disable-ipv6 \ --disable-opcache-file \ --disable-phpdbg \ --disable-rpath \ --disable-short-tags \ --disable-static \ --%{RH_LTO_CONFIGURE_OPTION} \ --%{RH_CONFIGURE_DEBUG_OPTION} if test $? != 0; then tail -500 config.log : configure failed exit 1 fi # build php with 'profile-guided-optimization' when enabled %if %pgo_build make %{?_smp_mflags} prof-gen /usr/bin/bash /rpmbuild/PHP-PGO/profile.sh --php_build $PWD make prof-clean make %{?_smp_mflags} prof-use %else make %{?_smp_mflags} %endif # stop rpmbuild and output infos for usage of the temporary binaries %if %break_build cp %{SOURCE5} "$PWD/php-debug.ini" > /dev/null EXTENSION_DIR="$PWD/modules" sed -i "s@__EXTENSION_DIR__@$EXTENSION_DIR@" "$PWD/php-debug.ini" echo -e "\n\n\e[1;31mBREAK-BUILD ENABLED\e[0m\n\n\e[1;32mPLEASE RUN:\e[0m export PHP_INI_SCAN_DIR=$PWD\n\e[1;32mCLI-BINARY:\e[0m $PWD/sapi/cli/php\n\e[1;32mAPACHE-MODULE:\e[0m $PWD/libs/libphp7.so\n\e[1;32mWEBSERVER: \e[0m http://localhost:9000\n" /usr/bin/bash /rpmbuild/PHP-PGO/profile.sh --php_build $PWD --webserveronly 1 exit 1 %endif # run test-suite when enabled %if %runselftest ulimit -s 32712 unset TZ LANG LC_ALL export LANG="C" TEST_PHP_EXECUTABLE="$PWD/sapi/cli/php" EXTENSION_DIR="$PWD/modules" PHP_INI_SCAN_DIR="$PWD/modules" NO_INTERACTION=1 MALLOC_CHECK_=2 MYSQL_TEST_HOST="localhost" MYSQL_TEST_SOCKET="/var/lib/mysql/mysql.sock" MYSQL_TEST_PORT="3306" MYSQL_TEST_USER="php_autotest" MYSQL_TEST_PASSWD="php_autotest" MYSQL_TEST_DB="php_autotest" PDO_MYSQL_TEST_DSN="mysql:host=localhost;dbname=php_autotest" PDO_MYSQL_TEST_SOCKET="/var/lib/mysql/mysql.sock" PDO_MYSQL_TEST_USER="php_autotest" PDO_MYSQL_TEST_PASS="php_autotest" PDO_MYSQL_TEST_ENGINE="MyISAM" cp %{SOURCE5} "$PWD/tmp-php.ini" > /dev/null sed -i "s@__EXTENSION_DIR__@$EXTENSION_DIR@" "$PWD/tmp-php.ini" $TEST_PHP_EXECUTABLE -n -c $PWD/tmp-php.ini $PWD/run-tests.php -n -c $PWD/tmp-php.ini find /var/www/sessiondata -user builduser -delete %endif %install install -m 0755 -d %{buildroot}%{_sysconfdir} %{buildroot}%{_sysconfdir}/httpd/conf %{buildroot}%{_libdir}/httpd/modules %{buildroot}%{_datadir}/%{name} install -m 0644 %{SOURCE1} %{buildroot}%{_datarootdir}/%{name}/zendoptimizer.php install -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/httpd/conf/httpd.conf INSTALL_ROOT=%{buildroot} make install # remove unpackaged files rm -rf %{buildroot}%{extension_dir}/*.a %{buildroot}%{_bindir}/{phptar} %{buildroot}%{_datadir}/pear %{buildroot}%{_libdir}/libphp%{phpver}.la %{buildroot}%{_mandir} %{buildroot}%{_sysconfdir}/httpd %{buildroot}%{_bindir}/phar %{buildroot}%{_bindir}/phar.phar # strip binaries for non-debug builds %if %RH_STRIP_BINARY strip -s --strip-unneeded %{buildroot}%{_libdir}/httpd/modules/libphp%{phpver}.so %{buildroot}%{extension_dir}/*.so %{buildroot}%{_bindir}/php %endif %files %attr(755,root,root) %{_libdir}/httpd/modules/libphp%{phpver}.so %files common %dir %{_datadir}/%{name} %dir %{_libdir}/%{name} %dir %{extension_dir} %files bcmath %{extension_dir}/bcmath.so %files calendar %{extension_dir}/calendar.so %files cli %{_bindir}/php %files ctype %{extension_dir}/ctype.so %files curl %{extension_dir}/curl.so %files devel %{_bindir}/php-config %{_bindir}/phpize %{_includedir}/php %{_libdir}/%{name}/build %files dom %{extension_dir}/dom.so %files exif %{extension_dir}/exif.so %files fileinfo %{extension_dir}/fileinfo.so %files gd %{extension_dir}/gd.so %files gettext %{extension_dir}/gettext.so %files hash %{extension_dir}/hash.so %files iconv %{extension_dir}/iconv.so %files imap %{extension_dir}/imap.so %files json %{extension_dir}/json.so %files mbstring %{extension_dir}/mbstring.so %files mysqli %{extension_dir}/mysqli.so %files opcache %{extension_dir}/opcache.so %{_datarootdir}/%{name}/zendoptimizer.php %files openssl %{extension_dir}/openssl.so %files pcntl %{extension_dir}/pcntl.so %files pdo %{extension_dir}/pdo.so %{extension_dir}/pdo_mysql.so %files phar %{extension_dir}/phar.so %files posix %{extension_dir}/posix.so %files session %{extension_dir}/session.so %files simplexml %{extension_dir}/simplexml.so %files soap %{extension_dir}/soap.so %files sockets %{extension_dir}/sockets.so %files tidy %{extension_dir}/tidy.so %files tokenizer %{extension_dir}/tokenizer.so %files xmlreader %{extension_dir}/xmlreader.so %files xmlwriter %{extension_dir}/xmlwriter.so %files zip %{extension_dir}/zip.so %changelog * Thu Dec 8 2016 Reindl Harald <h.reindl@thelounge.net> - update to PHP 7.0.14 - add 'with-pcre-jit' for upcoming 7.1 to configure * Sat Nov 26 2016 Reindl Harald <h.reindl@thelounge.net> - make sure that 'selftest' is using the intermediate-binaries in every case which became obvious on a machine running 7.1.0RC6 and building 7.0.14RC1 resulting in warnings about non-loadable extensions * Thu Nov 10 2016 Reindl Harald <h.reindl@thelounge.net> - update to PHP 7.0.13 * Sat Nov 5 2016 Reindl Harald <h.reindl@thelounge.net> - added patch to enable 'realpath_cache' with enabled 'open_basedir' we disable 'symlink' and 'link' for years and so CVE-2006-5178 has no point http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5178 * Sat Oct 15 2016 Reindl Harald <h.reindl@thelounge.net> - macro 'lto_build' enables link-time-optimization which increases build memory-usage combined with profile-guided-optimization dramatically but may improve performance for production builds - adds '--disable-gcc-global-regs' to configure-flags - adds '-flto -fno-fat-lto-objects -fuse-ld=gold -fuse-linker-plugin' to compiler and linker flags * Tue Oct 4 2016 Reindl Harald <h.reindl@thelounge.net> - add '--disable-huge-code-pages' to configure - performance seems to be unpredictable and in doubt faster without * Sat Oct 1 2016 Reindl Harald <h.reindl@thelounge.net> - macro 'break_build' starts a webserver on port 9000 with the temporary mod_php - script '/rpmbuild/PHP-PGO/profile.sh' supports as second param 'onlywebserver' instead profiling and kill it afterwards so we can use it's generate-logic for 'httpd.conf' and 'php.ini' with current locations in the working directory - remove '-funroll-loops' from compiler-flags - enabled for pgo-builds by '-fprofile-use' - add '-fno-exceptions -fvect-cost-model=unlimited -fipa-pta -fsemantic-interposition' to compiler flags - add '-fwrapv' to compiler flags to avoid https://bugs.php.net/bug.php?id=71201 - compiler-flags for documentation purpose: '-m64 -O3 -g0 -fopenmp -mfpmath=sse -pipe -fomit-frame-pointer -finline-functions -fstack-protector-strong --param=ssp-buffer-size=8 -D_FORTIFY_SOURCE=2 -fipa-pta -fira-loop-pressure -fivopts -fmerge-all-constants -fsemantic-interposition -ftree-loop-distribution -ftree-loop-if-convert -ftree-loop-if-convert-stores -ftree-loop-ivcanon -fvect-cost-model=unlimited -fwrapv -minline-all-stringops -fno-align-labels -fno-exceptions -fno-gcse -fno-math-errno -fno-strict-aliasing -Wformat -Werror=format-security -Wno-pointer-sign -Wno-stack-protector' * Thu Sep 29 2016 Reindl Harald <h.reindl@thelounge.net> - change PGO sequence to use "make prof-gen; profile.sh; make prof-clean; make prof-use" - remove "-Wno-coverage-mismatch" from compiler flags - https://bugs.php.net/bug.php?id=73111 * Sun Sep 25 2016 Reindl Harald <h.reindl@thelounge.net> - add '-fmerge-all-constants' to compiler flags * Sat Sep 24 2016 Reindl Harald <h.reindl@thelounge.net> - add '-fno-strict-aliasing -fno-align-labels -fno-gcse' to compiler flags https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html Note: When compiling a program using computed gotos, a GCC extension, you may get better run-time performance if you disable the global common subexpression elimination pass by adding -fno-gcse to the command line * Fri Sep 23 2016 Reindl Harald <h.reindl@thelounge.net> - remove 'ftp', 'xmlrpc' and 'xslt' from build - rework call of test-suite to use default-settings instead cloned /etc/php.ini - removed useless options from configure now that we build with system-gd instead bundeled * Wed Sep 21 2016 Reindl Harald <h.reindl@thelounge.net> - define 'break_build' and local 'debug_build' macros to stop before tests and packaging - ship a 'debug-ini.php' with extensions and 'extension_dir' in the working directory - now we can use the built binaries without installing them on the system - usecase: temporary debug-builds or tests without running the whole build-process - output tells the needed env-export and how to call the binary export PHP_INI_SCAN_DIR=/home/builduser/rpmbuild/BUILD/php-7.0.11 CLI-BINARY: /home/builduser/rpmbuild/BUILD/php-7.0.11/sapi/cli/php * Sun Sep 18 2016 Reindl Harald <h.reindl@thelounge.net> - use 'profile-guided-optimization' instead of 'link-time-optimization' for memory/optimize-balance - define 'pgo_build' macro to disable 'profile-guided-optimization' temporary - we run scripted requests from a temporary webserver between make-stages to profile our application - benchmark our cms-system shows 7 percent higher performance for php7 - see: https://software.intel.com/en-us/blogs/2015/10/09/pgo-let-it-go-php - link with 'nodump' for enhanced security - remove 'mcrypt' from build (if-you-are-typing-the-word-mcrypt-into-your-code-you-are-doing-it-wrong) * Sat Sep 17 2016 Reindl Harald <h.reindl@thelounge.net> - move all extensions to sub-packages for minimzed dependencies * Tue Sep 6 2016 Reindl Harald <h.reindl@thelounge.net> - add '-fivopts -ftree-loop-if-convert -ftree-loop-if-convert-stores -ftree-loop-ivcanon' to compiler flags - explicit export of 'CC' environment variable with CFLAGS for optimized builds - cleanup ./configure params - use system-gd and disable some autotests (now supported without patches) - use system-libzip (now supported without patches) - remove skipped and failing autotests to keep focus on new regressions * Mon Aug 29 2016 Reindl Harald <h.reindl@thelounge.net> - cleanup spec-file to build more or less 'vanilla' php with only own optimizations - add 'php-httpd-dummy.conf' as temporary 'httpd.conf' at build-time for 'apxs' without hacks * Sun Aug 28 2016 Reindl Harald <h.reindl@thelounge.net> - add 're2c' to build-requires and '--enable-re2c-cgoto' to configure * Sat Aug 27 2016 Reindl Harald <h.reindl@thelounge.net> - build all extensions loadable to share them between httpd and cli * Fri Aug 19 2016 Reindl Harald <h.reindl@thelounge.net> - cleanup configure options - start with '--disable-all' and enable used features - build without unused modules - improves time for build and selftest - add '--disable-opcache-file' for smaller builds since we use only the shm-cache - add '-fno-math-errno -fira-loop-pressure -ftree-loop-distribution' to compiler flags ------------------------------------------------------------------------ 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=73265 -- Edit this bug report at https://bugs.php.net/bug.php?id=73265&edit=1

« previous php.bugs (#206035) next »