making bbPress (and WordPress) work better!

Latest

How to put MySQL functions back into PHP 7

PHP 7 will go “release candidate” on August 20th 2015 which is very exciting because it will instantly be twice as fast as PHP 5.6 (and all previous versions). PHP7 gives HHVM a run for the money and takes 5 minutes to compile instead of hours for HHVM.

But there is a catch – if you have any legacy code that uses the mysql_* functions, they will stop working entirely in PHP 7. Not just a warning, not just deprecated, but gone, fatal.

However, it is easy to get them back without using a wrapper or modifying your code…
Read the rest of this page »

How to fix: Can’t see Unicode (UTF8) in Notepad++ on Windows XP

This is a little late to help most people because they have moved on from Windows XP to newer flavors, however there are still some die-hards going to 2019 with the simple PosReady registry tweak.

If you have a full unicode font installed like Symbola on Windows XP, you may still not see proper characters in applications like Notepad++ and instead get double empty boxes in their place.
Read the rest of this page »

phpinfo page for HHVM HipHop Virtual Machine

So you finally got HHVM 3.2 installed and running
and instinctively go to your phpinfo page to check it out…

but there nothing there, only “HipHop” …disappointing isn’t it?

So I whipped this up real quick as a phpinfo replacement:

HHVMinfo on github or direct download

Read the rest of this page »

Suhosin comes back from the dead, bringing security to newest PHP versions

수호신

While everyone has been distracted admiring PHP-NG, a great PHP project has quietly come back from the dead – Suhosin !

Suhosin is a well regarded security extension for PHP by Stefan Esser that had stopped getting updates after PHP 5.3. Perhaps it was due to more dramatic internal changes to the PHP core with 5.4 making it difficult to keep up. Linux distributions such as Debian that added Suhosin seeing its value, dropped it after updates stopped. Suhosin only worked up to PHP 5.3 – until now.

Suhosin can do neat tricks like disable EVAL and the regex /e modifier in PHP which the core of PHP cannot do by itself (or more accurately the core developers refuse to address). Suhosin also has many other options to help make PHP safer to use in a shared environment or where a server might be running a great deal of third-party code (ie. WordPress/plugins).
Read the rest of this page »

How to build HHVM 3.8 on CentOS 7

2015 UPDATE: new wiki page for HHVM on CentOS7 with alternate instructions
—-
While building HHVM (HipHop Virtual Machine) for faster PHP on CentOS 6.x was pretty much a nightmare because almost none of third-party libraries are available from major repositories, the freshly released CentOS 7.0 solves most of this problem as it has far newer packages available from EPEL (because it has roots in more modern Fedora 19).

Note that unlike PHP/PHPNG, HHVM requires major resources to build. You may be used to making PHP in 15 minutes on a little old 256mb 1ghz box. You can forget that with HHVM which is a beast to compile. 1gb ram minimum and lots of cpu power required to keep it an hour or two (this is part of why PHP NG instead is so exciting because it will be so much easier to custom build).
Read the rest of this page »

PHP NG within 10-25% of HHVM performance

Zeev Suraski (CTO of Zend and therefore an extremely qualified authority on PHP NG) has written a fascinating article comparing the performance of PHPNG against the current HHVM versions. A must read.

phpng-vs-hhvm

Perhaps even more importantly, he has written about the current state and future of PHP NG.
Read the rest of this page »

PHP NG now nearly TWICE as fast as PHP 5.6

correction: php core developers have urged that it is improper to call this version “5.7” (despite the versioning file stating so)

PHP 5.7 PHP NG is still in alpha development, however it is starting to show breathtaking performance improvements over 5.6 while maintaining virtually complete compatibility.

Dmitry Stogov has been hard at work since his first announcement in mid-January 2014 and milestone update in early-May to keep folding in more and more ideas to increase PHP speed (with significant contributions by Xinchen Hui, Nikita Popov and others).

Six months later in mid-July, their efforts are really bearing fruit and PHP 5.7 NG is about to become nearly 100% faster than PHP 5.6 when rendering the front page of a stock WordPress 3.6 installation:

PHP 5.6, 1000 renderings of WP front page = 26.756 seconds

PHP NG,  1000 renderings of WP front page = 14.810 seconds

and he is not even done yet, based on all his proposals and notes as you can follow on http://wiki.php.net/phpng

Read the rest of this page »

CentOS 7 to arrive in July with performance boost

Red Hat released RHEL 7 on June 10th which means the CentOS 7 community got to work, to prep their release based on the source. It is currently in “QA” release for review and will go to “GA” release (general availability) sometime in July.

The big news, at least for me, is performance improvements over CentOS 6.5
Red Hat claims 11% to 25% speed increase depending on workload:

Is that plausible from just an OS upgrade? Possibly, depending on better use of hardware and how much contention is going on. CentOS 7 will finally bring the linux 3.10 kernel to replace the 2.6.32 kernel in CentOS 6.5 – this means the elimination of the “big kernel lock” and better memory management.

7 will also bring the XFS filesystem as a default, alternative to EXT4. I am not sold on this change. I have seen a number of benchmarks that show EXT4 is faster in many cases, by a significant percent, over XFS (you can still use EXT4 of course). Apparently GRUB was also replaced with GRUB2 which is something I have to research and learn since it is critical for boot.

Want to read about all the new stuff for yourself?
Try the Red Hat release notes or save it for later in PDF format.

Initially there is no direct upgrade path for CentOS 6.5 to 7.
But they are discussing it and promise to explore after the GA release.

PHP 5.4, 5.6, 5.7 WordPress 3.9 Benchmark

update: now with PHP 5.7 (PHPng) comparison

Was really curious to follow up on PHP 5.6 with “real world” benchmarks so I built up a machine today for some quick’n’dirty tests. (I’ll add more tests to this at a later date as I have actual things to do this weekend and this was quite a bit of work).

Everything was allowed to pre-cache heavily, linux, mysql, php opcache, etc. this is just a raw php performance test (but no wp-cache, all dynamic pages)

Two tests: (for now)


1) directly calling the wordpress front page via php-fpm via the fcgi utility, which bypasses all of the web front end (nginx) so it is pure PHP speed

1000 passes (one pass at a time, single file asap via fcgi)
PHP 5.4 median = 28.562 seconds
PHP 5.6 median = 26.783 seconds
PHP 5.7 median = 19.405 seconds

 6.22% improvement with PHP 5.6

32.06% improvement with PHP 5.7


2) full web interface benchmark with logged in admin user, going into view “all posts” in the wp-admin backend (/wp-admin/edit.php) – this makes WordPress work really hard because it is loading all of the engine, plus the wp-admin code, plus authorizing the user via the cookie

1000 passes (one pass at a time, single file asap via curl)
PHP 5.4 median = 42.523
PHP 5.6 median = 39.455
PHP 5.7 median = 29.498

 7.21% improvement with PHP 5.6

30.63% improvement with PHP 5.7


environment:
Intel Quad Core i5 @ 3ghz
CentOS 6.5 64bit, MariaDB 10.0.11, Nginx 1.6.0, PHP 5.4.30/5.6.0beta4, Zend Opcache 7.0.4
WordPress 3.9.1 (stock with wp-cron disabled)

All built with GCC 4.8.2 and I made PHP 5.4 and 5.6 both use the same new Zend Opcache (because it is amazing)

I’ll do more comparisons and maybe even build PHP 5.5 at a later date.

Let me know if there are any specific requests for good things to compare.

Added PHP 5.7 (aka PHPNG) something to look foward to in 2015

PHP 5.6 enters final beta,  up to 10% faster than 5.4, 5.5

PHP 5.6 is about to enter its final beta this week or early next.

https://raw.githubusercontent.com/php/php-src/PHP-5.6/NEWS

It is now in “feature freeze” where only bug fixes will be applied to the code.

While PHP 5.5 was actually SLOWER than PHP 5.4 in some cases, it appears they have finally moved performance ahead with PHP 5.6 and informal benchmarks show it to be up to 10% faster than PHP 5.4 (and 5.5) using real-world code.

There will also be some further memory savings with how it handles strings and other data. Given the sheer size and bloat of modern WordPress, it will need every bit of help that PHP can throw at it, so I expect quick adoption on large websites.

Fortunately there are very few backward incompatible changes with PHP 5.6

http://php.net/migration56

The biggest “problem” will be deprecated warnings for users adapting to it from previous versions – but those warnings can be masked for now to reduce noise in error logs.

For example here is how I handle such noise on production servers via php.ini:

error_reporting = E_ALL & ~E_STRICT & ~E_DEPRECATED & ~E_NOTICE

The future of PHP looks quite exciting now with the recent proof-of-concept demonstrated via PHPNG (PHP next generation), where it might become 50% faster in some cases based on internal restructuring, memory handling modeled on jemalloc and just-in-time compiling. WordPress was already demonstrated to be 20% faster in an early experiment over PHP 5.5

Donate to OpenSSL

Virtually every open source OS and project on the web that uses encryption relies on OpenSSL. Yet they only get a few thousand a year in donations. Time to change that if we want better code: http://www.openssl.org/support/donations.html

Opcache Control Panel for PHP

With the first release of PHP 5.5 beta which includes the new Zend Opcache, I’d like to offer beta testers my free opcache control panel. It also works with PHP 5.4 and (in theory) 5.3

https://gist.github.com/ck-on/4959032/?ocp.php

or just right-click to download and save