Table of Contents
Installation and use
Why choose Shadowfax
Home PHP Framework Laravel Using Swoole to improve Laravel performance (Shadowfax)

Using Swoole to improve Laravel performance (Shadowfax)

May 25, 2021 pm 02:45 PM
laravel php swoole

The following is the tutorial column of laravel to introduce Shadowfax: Let Laravel wear the sword of Swoole, I hope it will be helpful to friends in need!

Swoole can be said to be a sharp sword for PHP. It expands the boundaries of PHP and allows many PHPers have seen the dawn of high concurrency. Using Swoole to improve the performance of Laravel is a very worthwhile investment. In this way, you can not only obtain the high performance of Swoole, but also take into account the high efficiency of Laravel, getting the best of both worlds. Shadowfax is such an expansion package. It is simple and easy to use and can help developers quickly migrate Laravel applications to run on Swoole.

First let's take a look at the performance of Laravel applications running using Shadowfax:

I use wrk as the benchmark tool this time, based on the latest version of Laravel 7, But the session-related middleware has been removed. Because Laravel enables sessions by default, and the session driver is file, if you run a test in this case, a session file will be created for each request, so the results will be meaningless. (Applications that pursue performance should not use file as the session driver)

Environment 1:

  • Hardware: 1 CPU, 4 Cores, 16GB Memory
  • MacOS 10.15.3
  • PHP 7.3.12 (opcache enabled)
  • Swoole 4.4.13
  • Shadowfax 2 (20 worker processes)

This environment is my personal Macbook Pro, which has better performance. I used wrk to start 4 threads and conducted a stress test with 200 concurrency:

wrk -t4 -c200 http://127.0.0.1:1215/
Copy after login

The result was 12430 rps:

Running 10s test @ http://127.0.0.1:1215/
  4 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    26.44ms   31.44ms 212.73ms   84.28%
    Req/Sec     3.13k   839.99     6.07k    65.75%
  124418 requests in 10.01s, 312.06MB read
  Socket errors: connect 0, read 54, write 0, timeout 0
Requests/sec:  12430.20
Transfer/sec:     31.18MB
Copy after login

Environment 2:

  • Hardware: 2 CPUs, 2 Cores, 4GB Memory
  • CentOS 7.5.1804
  • PHP 7.3.16 (opcache enabled)
  • Swoole 4.4. 17
  • Shadowfax 2 (10 worker processes)

This environment is a virtual cloud server instance of a certain cloud, with general configuration. I used wrk to start 2 threads and conducted a stress test with 100 concurrency:

wrk -c100 http://127.0.0.1:1215/
Copy after login

The result is 4001 rps:

Running 10s test @ http://127.0.0.1:1215/
  2 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    25.06ms   12.11ms  85.92ms   60.94%
    Req/Sec     4.02k    41.46     4.08k    79.79%
  40321 requests in 10.08s, 101.13MB read
Requests/sec:   4001.76
Transfer/sec:     10.04MB
Copy after login

Is the performance pretty good? Compared with the traditional PHP-FPM, it has been greatly improved.

Installation and use

The installation of Shadowfax is very simple and only requires two steps:

The first step is to use Composer to install Shadowfax into your Laravel project Go to:

composer require huang-yi/shadowfax
Copy after login

The second step is to use Laravel’s Artisan command shadowfax:publish to publish the configuration file:

php artisan shadowfax:publish
Copy after login

After execution, in your project root directory A configuration file named shadowfax.yml will be created, which you need to adjust according to the environment. Of course, this file will be automatically added to .gitignore, just like the .env file. The configuration may be different in different environments.

Now you can start your service through the Shadowfax command:

php shadowfax start
Copy after login

If it is the default configuration, you can access it through http://127.0.0.1:1215 your application. Of course, this is just for simple use. More information can be found on the Shadowfax project homepage.

Why choose Shadowfax

Of course, some friends will ask, there are already similar open source projects on Github, why do we need to reinvent the wheel again. In fact, this is not the case. I started trying to integrate Swoole and Laravel as early as 2016, and have open sourced two related projects. Currently, the swooletw/laravel-swoole with the highest number of stars in this regard is the fork of huang-yi/ that I released earlier. laravel-swoole-http. But I didn’t promote my project because I knew very well that previous projects had more or less problems and could not support coroutines well, and coroutines happen to be Swoole’s strongest weapon, so All gave up.

Now, Shadowfax can support coroutines very well, you can safely enable Swoole's coroutine features. Moreover, Shadowfax also solves the problem of database connection in the coroutine environment. When you enable Swoole's one-click coroutine, Shadowfax will automatically create a connection pool for your database connection. The most important thing is that all this is insensible at the level of your application code. You can still write business code as usual without any mental burden, because Shadowfax does not require you to make any changes in the way you write code.

Finally, what I want to explain is that Shadowfax did not deliberately give Laravel the ability to use Swoole. Its main purpose is: To improve Laravel at the minimum cost without destroying the Laravel development experience. Application performance. I also don’t recommend developers to use any interface of Swoole in Laravel, because Laravel itself is a framework that runs in the traditional PHP mode and is not friendly to Swoole. If you are not an experienced Swoole developer, it is easy to use it during use. Something went wrong. If your Laravel application does not use any Swoole interface, it means that your program can also run in PHP-FPM mode. Once there is a problem with the program running on Swoole, we can immediately switch back to PHP-FPM mode. , which can ensure the availability of the program.

The above is the detailed content of Using Swoole to improve Laravel performance (Shadowfax). For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Laravel Introduction Example Laravel Introduction Example Apr 18, 2025 pm 12:45 PM

Laravel is a PHP framework for easy building of web applications. It provides a range of powerful features including: Installation: Install the Laravel CLI globally with Composer and create applications in the project directory. Routing: Define the relationship between the URL and the handler in routes/web.php. View: Create a view in resources/views to render the application's interface. Database Integration: Provides out-of-the-box integration with databases such as MySQL and uses migration to create and modify tables. Model and Controller: The model represents the database entity and the controller processes HTTP requests.

Solve caching issues in Craft CMS: Using wiejeben/craft-laravel-mix plug-in Solve caching issues in Craft CMS: Using wiejeben/craft-laravel-mix plug-in Apr 18, 2025 am 09:24 AM

When developing websites using CraftCMS, you often encounter resource file caching problems, especially when you frequently update CSS and JavaScript files, old versions of files may still be cached by the browser, causing users to not see the latest changes in time. This problem not only affects the user experience, but also increases the difficulty of development and debugging. Recently, I encountered similar troubles in my project, and after some exploration, I found the plugin wiejeben/craft-laravel-mix, which perfectly solved my caching problem.

Laravel user login function Laravel user login function Apr 18, 2025 pm 12:48 PM

Laravel provides a comprehensive Auth framework for implementing user login functions, including: Defining user models (Eloquent model), creating login forms (Blade template engine), writing login controllers (inheriting Auth\LoginController), verifying login requests (Auth::attempt) Redirecting after login is successful (redirect) considering security factors: hash passwords, anti-CSRF protection, rate limiting and security headers. In addition, the Auth framework also provides functions such as resetting passwords, registering and verifying emails. For details, please refer to the Laravel documentation: https://laravel.com/doc

Laravel framework installation method Laravel framework installation method Apr 18, 2025 pm 12:54 PM

Article summary: This article provides detailed step-by-step instructions to guide readers on how to easily install the Laravel framework. Laravel is a powerful PHP framework that speeds up the development process of web applications. This tutorial covers the installation process from system requirements to configuring databases and setting up routing. By following these steps, readers can quickly and efficiently lay a solid foundation for their Laravel project.

What versions of laravel are there? How to choose the version of laravel for beginners What versions of laravel are there? How to choose the version of laravel for beginners Apr 18, 2025 pm 01:03 PM

In the Laravel framework version selection guide for beginners, this article dives into the version differences of Laravel, designed to assist beginners in making informed choices among many versions. We will focus on the key features of each release, compare their pros and cons, and provide useful advice to help beginners choose the most suitable version of Laravel based on their skill level and project requirements. For beginners, choosing a suitable version of Laravel is crucial because it can significantly impact their learning curve and overall development experience.

The Continued Use of PHP: Reasons for Its Endurance The Continued Use of PHP: Reasons for Its Endurance Apr 19, 2025 am 12:23 AM

What’s still popular is the ease of use, flexibility and a strong ecosystem. 1) Ease of use and simple syntax make it the first choice for beginners. 2) Closely integrated with web development, excellent interaction with HTTP requests and database. 3) The huge ecosystem provides a wealth of tools and libraries. 4) Active community and open source nature adapts them to new needs and technology trends.

How to view the version number of laravel? How to view the version number of laravel How to view the version number of laravel? How to view the version number of laravel Apr 18, 2025 pm 01:00 PM

The Laravel framework has built-in methods to easily view its version number to meet the different needs of developers. This article will explore these methods, including using the Composer command line tool, accessing .env files, or obtaining version information through PHP code. These methods are essential for maintaining and managing versioning of Laravel applications.

How to learn Laravel How to learn Laravel for free How to learn Laravel How to learn Laravel for free Apr 18, 2025 pm 12:51 PM

Want to learn the Laravel framework, but suffer from no resources or economic pressure? This article provides you with free learning of Laravel, teaching you how to use resources such as online platforms, documents and community forums to lay a solid foundation for your PHP development journey from getting started to master.

See all articles