SlideShare a Scribd company logo
Adding Real-time
Features to PHP
Applications
About me
@ronnylt
Ronny López
Technical Lead
Opinions are my own
Agenda
• Concepts and foundations
• Real-time communication patterns
• Implementations
• Examples
Real-time
A system is said to be real-time if the total
correctness of an operation depends not only upon
its logical correctness, but also upon the time in
which it is performed
Real-time
Applications must guarantee response within
specified time constraints, often referred to as
“deadlines”
Real-time
Applications in which the computer must
respond as rapidly as required by the user
Criteria for real-time
• Hard – missing a deadline is a total system failure

• Firm – infrequent deadline misses are tolerable, but
may degrade the system's QoS. Results are NOT
usefulness after its deadline

• Soft – the usefulness of a result degrades after its
deadline, thereby degrading the system’s QoS
Real-time
Soft real-time
Soft real-time
Typically used to solve issues of concurrent
access and the need to keep a number of
connected systems up-to-date through
changing situations
Soft real-time use cases
• Live audio-video systems
• Users collaboration
• Messaging applications, etc…
• Real-time analytics
• Gaming
• Etc…
The road to 500 million
Symfony downloads
https://symfony.com/500million
Why adding a soft

real-time feature?
• To improve end-user experience
• Due to insufficient scaling capacity
Real-time
Communication on the
Web
A Bit of History
• Flash
• Ajax (XMLHttpRequest)
• Comet (reverse Ajax)
• WebSocket
• Polyfills
The Modern Web
• WebSockets
• HTTP/2
WebSockets
• Full-duplex communication channels over a
single TCP connection
• Currently supported in most major
browsers
• Can be used by any client or server
application
HTTP/2
• Major revision of the HTTP
• Replacement for how HTTP is expressed
“on the wire”
• Focus on performance, end-user perceived
latency, network and server resource usage
The Mobile Internet
• Inestable connections
• HTTP & TCP slow-start are usually not a
good match for constantly dropped
connections
• Network interface kills battery
• Large responses + periodic polling = bad
What EveryWeb
Developer Should Know
About Networking and
Browser Performance
Real-time
Communication
Patterns
The “actors”
Client Server
Peer Peer
Basic Patterns
• Remote Procedure Call (RPC)
• PUB/SUB
RPC
• Allows to call a procedure (function)
remotely
• Involves peers of these three roles
Caller CalleeDealer
RPC – Example 1
Something you usually do with Ajax
Browser Server
GetConference(123)
{name:deSymfony,where: Madrid}
RPC – Example 2
Push data to the browser
BrowserServer
DisplayOffer(offer)
RPC – Example 3
Communication between micro-services
Auth
Server
login(user)
Analytics Payments
track(user) process(order)
Publisher/Subscriber
• A peer subscribe to a topic
• Another peer publish a message about this
topic
• All publishers interested in the topic
receives the message
PUB/SUB – Example 1
Notifications
Browser
Server
updateStats(stats)
Browser Browser
Subscribed To: StatsUpdate
PUB/SUB – Example 2
Micro-services Synchronization
Auth
Admin
Service
updateSettings(freshSettings)
Encoding Payments
Subscribed To: SettingsChanges
Analytics
Web Application Messaging Protocol

http://wamp-proto.org/
Not to be confused with WAMP:
”Windows + Apache + MySQL + PHP"
WAMP
• Open standard WebSocket subprotocol
• Provides two application messaging
patterns in one unified protocol
• Remote Procedure Calls
• Publish & Subscribe
WAMP Features
• Enables different technologies, processes,
machines, etc… to communicate with each
other, in soft real-time
WAMP Features
• Based on modern Web standards:
WebSocket, JSON and URIs
• Designed with first-class support for
different languages in mind (Polyglot)
Unified Application Routing
Routing of events (for PUB/SUB) and routing of
calls (for RPC) in one unified protocol
Caller CalleeDealer
Publisher SubscriberBroker
Dealer
• Routes calls from the caller to the callee
and routes back results or errors
• Callers and callee don’t know about each
other
• Applications using RPC benefit from these
loose coupling
Caller CalleeDealer
Broker
• Keeps a book of subscriptions
• Forward the events (messages) to all
subscribers
• Publisher are subscribers are loosely
coupled
Publisher SubscriberBroker
Unified Protocol
• When you combine a Broker and a Dealer
you get what WAMP calls a Router
Router Broker Dealer= +
The Big Picture
WAMP Router
(Dealer + Broker)
BrowserBrowserBrowserBrowser
Mobile
Clients
Services
Do we really need
another wheel?
How does WAMMP compare to other technologies
Criteria
• Pub/Sub
• RPC
• Routed RPC (not only point-to-point)
• Web native: run natively on the Web (without
tunneling or bridging)
• Cross Language
• Open Standard
Tech PubSub RPC
Routed
RPC
Web native
Cross
Language
Open
Standard
WAMP ✔ ✔ ✔ ✔ ✔ ✔
Ajax ✔ ✔ ✔
Comet ✔ ✔
JSON-RPC ✔ ✔ ✔ ✔
socket.io ✔ ✔
ZMQ ✔ ✔
XMPP ✔ ✔ ✔ ✔
Implementations
• Client libraries for most popular languages
• Full featured router implementations in
several languages
WAMP Routers
• crossbar.io – Advanced, open-source, full
featured, supported by the creators of
WAMP

• Your own… It’s an open protocol
WAMP Ecosystem
• Thruway – library built in PHP that provides
both a client and a router
• Turnpike – router implemented in Go

• wamp.rt  – router for NodeJS

• Erwa – router implemented in Erlang

Choosing an
implementation
Let’s talk about trade-offs
Is PHP suitable for soft
real-time applications?
Is PHP the right tool
for the job?
No.
No?
Why not?
Let’s use
Node.js ! It’s an opportunity to
deploy Erlang or
Golang, or …
Languages War
Conflicts Everywhere
Conflicts everywhere
Trade-offs everywhere
Trade-off
• Situation that involves losing one
quality or aspect of something in
return for gaining another quality
or aspect

• It often implies a decision to be
made with full comprehension of
both the upside and downside of
a particular choice
Is PHP the right tool
for the job?
There is not simple answer
The simpler answer I know is:
“I don’t care”
PHP Codebase

(Symfony, Silex, Laravel, Drupal, etc…)
Clients
Web, Mobile, etc…
Request/Response
Request/Response
Real-time API

Pub/Sub, RPC, etc..
RPC
• A big ecosystem of thousands of useful
libraries and components easily installable
thanks to Composer
• Very powerful template engines, ORMs,
etc…
• We have implemented very powerful design
patters in PHP coming from Java and other
languages
• We have several thousands of high quality code
running on production
• We have invested multiple hours testing,
refactoring and improving the codebase
It’s here to stay
Adding Real-time Features to PHP Applications
Remember
Full comprehension of both the upsides and downsides
of a particular choice
Downsides
• We have to introduce a new stack to
provide real-time features
Upsides
• Possibility to introduce real-time features
without deep modifications in the current
codebase
• No need to learn a whole new language/
stack, with the implications it has
• Loosely coupled systems
Upsides cont…
• Opens the door to write reactive, event-
based, distributed architectures
• Scalability is easier to achieve by
distributing messages to multiple systems
Examples
The Stack
• crossbar.io used as the router (dealer+broker)
• PHP client gathers and publish events
• Silex/Symfony backend serve the data and
contains the biz logic
crossbar.io
• Networking platform for distributed and
micro-services applications
• Full implementation of the WAMP protocol
• Feature rich, scalable, robust and secure
• It takes care of the hard parts of messaging
so you can focus on your app's features
Adding Real-time Features to PHP Applications
Tips and Tricks
• WSS
• Deadlines
• Timeouts
• Retries with back-off, etc…
• Idempotency
Opinionated
Conclusion
• Understand core concepts and patterns,
technology is volatile
• Question everything: Why?, why not?
• Decide based on several factors: user
experience, scalability, feasibility, developer
experience, maintenance costs/debt, etc…
Don’t Stop Here
• gRPC – A high performance, open-source
universal RPC framework from Google



http://www.grpc.io/

• IoT, WoT, etc… – real world objects
connected to the wider internet
References
• WAMP Proto – http://wamp-proto.org/
• https://github.com/voryx/ThruwayBundle
• https://www.infoq.com/articles/websocket-
and-http2-coexist
Questions
• What about React PHP?
• Multi-Threading in PHP with pthreads?

https://gist.github.com/krakjoe/6437782/
• Micro-services what?
Gracias!
@ronnylt
Work with us!

More Related Content

PDF
From silex to symfony and viceversa
PPTX
Tuenti Release Workflow
PPT
PLNOG16: ZTP – Zero Touch Provisioning in use, Marek Plaza
PPTX
Parallel and Asynchronous Programming - ITProDevConnections 2012 (English)
PDF
Gearman - Northeast PHP 2012
PDF
HTTP/2 turns 3 years old // Web Performance Meetup wao.io 20180612
PDF
J Ruby Whirlwind Tour
PDF
Multi-language/multi-OS communication using RabbitMQ
From silex to symfony and viceversa
Tuenti Release Workflow
PLNOG16: ZTP – Zero Touch Provisioning in use, Marek Plaza
Parallel and Asynchronous Programming - ITProDevConnections 2012 (English)
Gearman - Northeast PHP 2012
HTTP/2 turns 3 years old // Web Performance Meetup wao.io 20180612
J Ruby Whirlwind Tour
Multi-language/multi-OS communication using RabbitMQ

What's hot (20)

PPTX
A tour of Java and the JVM
PDF
RabbitMQ fairly-indepth
PPTX
Keeping up with PHP
PDF
XMPP Academy #1
PDF
Messaging Standards and Systems - AMQP & RabbitMQ
PDF
Fabric8 mq
PPTX
High powered messaging with RabbitMQ
PDF
Integrating PostgreSql with RabbitMQ
PDF
EUC2015 - Load testing XMPP servers with Plain Old Erlang
PDF
Being Agile with Scrum - koders.co
PDF
ZaloPay Merchant Platform on K8S on-premise
PDF
Apache james more than emails in the cloud
PDF
Apache James/Hupa & GWT
PDF
NullMQ @ PDX
PPSX
webservers
PPT
Lecture6
PDF
Composer
PPTX
Parallel and Asynchronous Programming - ITProDevConnections 2012 (Greek)
PDF
Java Application Servers Are Dead!
PDF
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
A tour of Java and the JVM
RabbitMQ fairly-indepth
Keeping up with PHP
XMPP Academy #1
Messaging Standards and Systems - AMQP & RabbitMQ
Fabric8 mq
High powered messaging with RabbitMQ
Integrating PostgreSql with RabbitMQ
EUC2015 - Load testing XMPP servers with Plain Old Erlang
Being Agile with Scrum - koders.co
ZaloPay Merchant Platform on K8S on-premise
Apache james more than emails in the cloud
Apache James/Hupa & GWT
NullMQ @ PDX
webservers
Lecture6
Composer
Parallel and Asynchronous Programming - ITProDevConnections 2012 (Greek)
Java Application Servers Are Dead!
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
Ad

Similar to Adding Real-time Features to PHP Applications (20)

PPSX
Building Modern Digital Services on Scalable Private Government Infrastructur...
PDF
Building high performance microservices in finance with Apache Thrift
PDF
Introduction to SignalR
PPTX
AMF Flash and .NET
PPTX
Micro Services Architecture
PPTX
Optimizing performance
PDF
Building real time applications with Symfony2
PPTX
Realtime traffic analyser
PPTX
Beyond REST and RPC: Asynchronous Eventing and Messaging Patterns
PDF
Foundational Design Patterns for Multi-Purpose Applications
PDF
Node.js BFFs - our way to the better/micro frontends
PPTX
PMIx: Bridging the Container Boundary
PDF
Real time web apps
PPTX
Realtime Applications with Laravel - LaravelLive India Online Meetup Jun 2020
PPTX
Scaling habits of ASP.NET
PDF
Overcoming software development challenges by using an integrated software fr...
PPT
Thick client application security assessment
PPTX
Microservices-101
PPTX
HPC Controls Future
PPTX
Apache Thrift, a brief introduction
Building Modern Digital Services on Scalable Private Government Infrastructur...
Building high performance microservices in finance with Apache Thrift
Introduction to SignalR
AMF Flash and .NET
Micro Services Architecture
Optimizing performance
Building real time applications with Symfony2
Realtime traffic analyser
Beyond REST and RPC: Asynchronous Eventing and Messaging Patterns
Foundational Design Patterns for Multi-Purpose Applications
Node.js BFFs - our way to the better/micro frontends
PMIx: Bridging the Container Boundary
Real time web apps
Realtime Applications with Laravel - LaravelLive India Online Meetup Jun 2020
Scaling habits of ASP.NET
Overcoming software development challenges by using an integrated software fr...
Thick client application security assessment
Microservices-101
HPC Controls Future
Apache Thrift, a brief introduction
Ad

Recently uploaded (20)

PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PPTX
ai tools demonstartion for schools and inter college
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
L1 - Introduction to python Backend.pptx
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
Transform Your Business with a Software ERP System
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
System and Network Administration Chapter 2
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
AI in Product Development-omnex systems
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
ai tools demonstartion for schools and inter college
Design an Analysis of Algorithms II-SECS-1021-03
Upgrade and Innovation Strategies for SAP ERP Customers
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
L1 - Introduction to python Backend.pptx
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
How to Choose the Right IT Partner for Your Business in Malaysia
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
wealthsignaloriginal-com-DS-text-... (1).pdf
Transform Your Business with a Software ERP System
VVF-Customer-Presentation2025-Ver1.9.pptx
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
System and Network Administration Chapter 2
Odoo Companies in India – Driving Business Transformation.pdf
Operating system designcfffgfgggggggvggggggggg
AI in Product Development-omnex systems
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf

Adding Real-time Features to PHP Applications