The document discusses PHP7 and how to optimize it for best performance. It notes that PHP7 is up to twice as fast as PHP5.6 and uses significantly less memory. It then provides several recommendations for further optimizing PHP7 performance, such as using Unix domain sockets, opcache file caching, profile guided optimization, and huge pages. Real-world benchmarks from companies show PHP7 provides 15-40% better performance.
2. SELF INTRODUCTION
Author of Yaf, Yar, Yac, Yaconf, Taint Projects
Maintainer of Opcache, Msgpack, PHP-Lua Projects
PHP Core Developer Since 2011
Zend Consultant Since 2013
One of PHP7 Core Developers: Dmitry Stogov, Xinchen Hui, Nikita Popov
Chief Software Architect at Lianjia Since 2015
3. W3Techs.com 100
Released in 1994 by Rasmus Lerdorf
20+ Years Programming Language
Most Popular Web Service Program Language
PHP7 is Released at 3 Dec 2015
Latest Version is PHP7.0.4
PHP
4. For Unicodes Supports
Started in 2005, Die in 2010
Most Features Goes Into PHP-5.3
++PHP5 = PHP7
PHP6
5. Based on PHP-5.5 JIT-Opcache Project
One year long work for better PHP performance
PHP7
6. Memory Optimization - PHP spends 20% time on Memory
Reduce Memory allocations
Reduce Memory Usage
Reduce Memory Indirection
Cache friendly
PHPNG
zval gc_infoblock_info
0 16 40 56
Zval in PHP5
zval
0 16
Zval in PHP7
7. Improved Performance: PHP 7 is up to twice as fast as PHP 5.6
Significantly Reduced Memory Usage
Abstract Syntax Tree
Consistent 64-bit Support
Improved Exception Hierarchy
Many Fatal Errors Converted to Exceptions
The Null Coalescing Operator (??)
Return & Scalar Type Declarations
Anonymous Classes
And More..
PHP7
14. PHP 7 is Up to Twice as Fast as PHP 5.6
Significantly Reduced Memory Usage
However, It Could Be Faster
MAKE PHP7 FASTER
15. Unix Domain Socket
FastCGI Params
Use Static PM
Less Configuration is Better
Opt Children Number = Total CPU Resource / CPU Usage Per Request
Of course, 400 children also make sense
NGNIX+PHP-FPM
16. Deploying Document Root in Tmpfs
Use Fixed Size Memory
Data Could Be Lost After Reboot
USE TMPFS
17. USE LATEST COMPILER
More Compiler Optimization
GCC4.8 - Global Registers
%r14 : execute_data
%r15: opline
Up to 10% Performance Improvement
18. Using PGO is simple in PHP7
USE PGO
Profile Guided Optimization
Optimize for Specific Cases
Optimization According to Data Collected
in Runtime
Up to 7% Performance Improvement
Each Coin Has Two Side
19. Persistent Secondary File-Based Cache for OPCache
Shared Memory is Limited
Cache Can Live Across Processes
opcache.file_cache=/tmp/
opcache.file_cache_only?
OPCACHE FILE CACHE
20. Hugepages - Reduce TLB Miss
Opcache.huge_code_page - Reduce iTLB miss
Shared Memory
Regular Memory Allocations
Note: SIGBUS on Forking
USE_ZEND_ALLOC_HUGE_PAGES = 1
PHP7.0.5
USE HUGEPAGES