asynchronous php: no longer a hack job
TRANSCRIPT
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Asynchronous PHPAsynchronous PHPNo Longer a Hack JobNo Longer a Hack Job
Ben DechraiBen Dechrai@bendechrai@bendechrai
#osdc14 https://joind.in/talk/view/12621#osdc14 https://joind.in/talk/view/12621
Open
Sourc
e Dev
eloper
s' C
onfe
rence
20
14
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
What IsAsynchronous?
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Synchronous Eggs Benedict
Make Hollandaise Sauce● separate eggs● melt butter● whisk
Poach Eggs
Fry Bacon
Saute Spinach
Preheat Plates
Toast Bread
7 minutes
3 min
3 min
2 min
1
1
Total 17 minutes, and cold Hollandaise sauce :(
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Synchronous Eggs Benedict
Make Hollandaise Sauce● separate eggs● melt butter● whisk
Poach Eggs
Fry Bacon
Saute Spinach
Preheat Plates
Toast Bread
Total 17 minutes, and cold Hollandaise sauce :(
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Asynchronous Eggs Benedict
Make Hollondaise Sauce● separate eggs● melt butter● whisk
Poach Eggs
Fry Bacon
Saute Spinach
Preheat Plates
Toast Bread
Total 7 minutes, and hot Hollandaise sauce :)
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Synchronous PHP
Full HTTP Request
Create Order
Authorize Payment
Send Email
Send order towarehouse API
Show Confirmation
Update Sales Dashboard
A long running process on checkout
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Full HTTP Request
Asynchronous PHP
Create Order
Authorize Payment
Send Email
Send order towarehouse API
Show Confirmation
Update Sales Dashboard
Much faster checkout process!
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Manual AsynchronicityManual Asynchronicity
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
shell_exec
● not available on all systems● allows for custom php.ini● logs everything● two files, harder to debug/maintain
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
detach client
● all code in one place● potentially easier to integrate with a framework● not reliable - requires FPM/CGI mode
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
cURL
● must be accessiblevia web request
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Demo 1Demo 1
React PHPReact PHP
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Summary
● React PHP
– still suffers underlying PHP issues● one process to rule them all● memory overflow
– easier to use, especially with composer
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Synchronous PHP Chat
Server
Log File
User 1 User 2
Send SendRead Read
Append Read
Read since when?
Log file size / rotation
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Asynchronous PHP Chat
Server
Log File
User 1 User 2
Append
Socket Socket
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Demo 3Demo 3
Ratchet on ReactRatchet on React
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Summary
● Ratchet
– takes the awesomeness of React
– adds Web Sockets● one process to rule them all● memory overflow
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Where To From Here?
● libevent
– replaces the event loop to improve performance● Deployment
– apache doesn't handle web sockets at all, so use varnish or haproxy
● route restests to web server or web socket as required
– make sure the Ratchet app doesn't die● use suvervisord or similar
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Credits
● Eggs Benedict by Jiewa Vieri
References
● Methods for asynchronous processes in PHP by Dave Newson
● PHP Is Meant to Die by Software Gunslinger
● React PHP
● Ratchet
Asynchronous PHP: No Longer a Hack JobAsynchronous PHP: No Longer a Hack Job
Thank You!Thank You!Questions?Questions?
Ben DechraiBen Dechrai@bendechrai@bendechrai
Open
Sourc
e Dev
eloper
s' C
onfe
rence
20
14