As you have already noticed, Ratchet applications are not deployed like your typical PHP application, but in fact run their own HTTP server that can directly answer HTTP requests. Also, most applications will not only serve WebSocket connections, but also need to process regular HTTP requests, too.
Tip
This section is meant to give you an overview on how to deploy a Ratchet application in a production environment. For the remaining sections of this chapter, we will continue using the Docker-based development setup (without load balancing and fancy process managers) for the sake of simplicity.
This will open an entire set of new problems to solve. One of them is scalability: by default, PHP runs single-threaded, so even when using the asynchronous event loop offered by libev
, your application will never scale beyond a single CPU. While you could consider using the pthreads
extension to enable threading in PHP (and to enter a whole new world of pain), it is usually easier to...