Download - InterConPHP 2014 - Scaling PHP
![Page 2: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/2.jpg)
Lucas Arruda
Software Architect @ CI&T
Open-Source enthusiast
~10 yrs on the road
Based on Campinas-SP
Zend Certified Engineer PHP 5.3
Drupaler for 4 yrs
Google Cloud Platform Qualified Dev.
![Page 3: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/3.jpg)
Handrus
Software Architect / Dev @ Taller
Open-Source and Agile
~10 yrs on the road
Based on Bauru-SP/Florianópolis-SC
Drupaler for 3 yrs
![Page 4: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/4.jpg)
The Basics
![Page 5: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/5.jpg)
Use the latest PHP stable version
![Page 6: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/6.jpg)
Use the latest PHP stable version
![Page 7: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/7.jpg)
Disable unnecessary PHP extensions and web-server modules
● PHP extensions consume memory heap
● Some badly written can cause memory leaks
● The same applies for web-server modules
● Disable if you don’t need them!
![Page 8: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/8.jpg)
Fine tune your php.ini!
● memory_limit
memory_get_usage() / memory_get_peak_usage()
● realpath_cache_size
realpath_cache_get()
● realpath_cache_ttl
Max execution per thread - will affect memory usage!
![Page 9: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/9.jpg)
mod_phpvs.
FastCGIvs.
PHP-FPM
![Page 10: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/10.jpg)
ob_flush()flush()
?
![Page 11: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/11.jpg)
PHP ACCELERATORS
![Page 12: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/12.jpg)
Alternative PHP Cache (APC)
Zend OPcache
XCache
![Page 13: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/13.jpg)
APC OPcache XCache
![Page 14: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/14.jpg)
![Page 15: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/15.jpg)
Zephir
![Page 16: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/16.jpg)
Scaling PHPHorizontally
![Page 17: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/17.jpg)
Does your app use session data?
No: you’re good to go!
Yes: then you’ll need to manage this data across multiple servers.
![Page 18: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/18.jpg)
Sharing session data
Fault tolerantNo bottleneckCheaper
buut… it needs architecure changes!
Persistent load balancing
Sharing session data
PHP Session Management
Persistent load balacing
Single point of failureBottleneckExpensive
![Page 19: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/19.jpg)
Options
Shared file-systemDatabaseMemcache / Redis
session.name
session.save_handler
session.save_path
Sharing session data
Handlers
filesusermemcache
![Page 20: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/20.jpg)
Avoid database specific queries.
Good libraries can help (Doctrine FTW!)
If not possible Document like any Technical Debt!
![Page 21: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/21.jpg)
And choose wellyour database!!
● MySQL● MariaDB● PerconaDB
Version?!
![Page 22: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/22.jpg)
![Page 23: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/23.jpg)
How dependent of your actual environment are you?
timezonepaths connection stringlimits
timeouts
Number of triesAPI Keys
![Page 24: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/24.jpg)
Caching Mechanisms
![Page 25: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/25.jpg)
APCfor caching user data
Memcachefor key/value storage (URI/HTML?)
tmpfs/ramfsfor all file-based caching
![Page 26: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/26.jpg)
Reverse proxying
Nginx Varnish
![Page 27: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/27.jpg)
![Page 29: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/29.jpg)
Q&Aciandt.com
![Page 30: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/30.jpg)
THANKS FOR
BEINGHERE!
Please evaluate this presentation!http://goo.gl/P8ZDfc
(3 questions only)
![Page 31: InterConPHP 2014 - Scaling PHP](https://reader033.vdocuments.net/reader033/viewer/2022051109/5487250bb4af9fa00d8b53ad/html5/thumbnails/31.jpg)
@lunascarruda
google.com/+LucasArruda
fb.com/lucasnarruda
linkedin.com/in/larruda
github.com/larruda
coderbits.com/larruda
@handrus
google.com/+HandrusNogueira
fb.com/handrus
linkedin.com/in/handrus
github.com/handrus
coderbits.com/handrus