Book Image

Mastering The Faster Web with PHP, MySQL, and JavaScript

By : Andrew Caya
Book Image

Mastering The Faster Web with PHP, MySQL, and JavaScript

By: Andrew Caya

Overview of this book

This book will get you started with the latest benchmarking, profiling and monitoring tools for PHP, MySQL and JavaScript using Docker-based technologies. From optimizing PHP 7 code to learning asynchronous programming, from implementing Modern SQL solutions to discovering Functional JavaScript techniques, this book covers all the latest developments in Faster Web technologies. You will not only learn to determine the best optimization strategies, but also how to implement them. Along the way, you will learn how to profile your PHP scripts with Blackfire.io, monitor your Web applications, measure database performance, optimize SQL queries, explore Functional JavaScript, boost Web server performance in general and optimize applications when there is nothing left to optimize by going beyond performance. After reading this book, you will know how to boost the performance of any Web application and make it part of what has come to be known as the Faster Web.
Table of Contents (19 chapters)
Title Page
Copyright and Credits
Dedication
Packt Upsell
Foreword
Contributors
Preface
Free Chapter
1
Faster Web – Getting Started
6
Querying a Modern SQL Database Efficiently
Index

Asynchronous non-blocking I/O calls


As we have seen in the previous chapters of this book, I/O calls will always offer the worst performance due to the underlying latency of establishing, using and closing streams and sockets. Since PHP is basically a synchronous language that waits for a called function to return before resuming code execution, I/O calls are especially problematic if the called function has to wait for a stream to close before returning to the calling code. This becomes even worse when a PHP application has thousands of I/O calls to do every few minutes for example.

Since PHP 5.3, it has become possible to interrupt PHP's normal flow of execution by using generators and thus, to execute code asynchronously. As we have seen previously, even if dynamic structures can be less performant in general, they can still be useful in speeding up blocking code. This is particularly true for I/O calls that usually have very high latency. In order to better grasp the orders of magnitude...