1. <s id="ykofe"></s>
      <object id="ykofe"><option id="ykofe"></option></object>

      <s id="ykofe"></s>

      Laravel - 為 WEB 藝術家創造的 PHP 框架。

      PHP THAT DOESN'T HURT. CODE HAPPY & ENJOY THE FRESH AIR.

      Laravel logo

      Laravel?之父:讓 Laravel、Symfony、 Zend 來一場公平的性能測試

      網上充斥著各式各樣的 PHP 框架性能對比的文章。然而,他們總是把“蘋果”和“橘子”做對比(看上去有點兒像,都是圓的,但其實不是一碼事)。這次,我將著重對 Laravel、Symfony 和 Zend 這三個框架做性能對比,并且還要說明為什么這三個框架總是被錯誤的進行比較。

      我給的對比結果你不必全信。讀完這篇文章之后,你可以自己搞一個 2GB 的 DigitalOcean 的服務器親自去檢驗一下,也就 5 分鐘而已。

      開始之前,我希望你知道:所有這些框架都足夠快,都可以滿足你構建任何應用。寫這篇文章之前我也猶豫過,我認為做這種層次的對比其實真的挺傻的。我唯一的目的是展示如何在三個框架之間進行公平的比較。

      問題的源頭

      當你在一臺全新的 DigitalOcean 服務器上配置 Symfony 或 Zend 項目時,你會發現返回的 http 響應是沒有 session 信息的。注意,看下圖,cookie 并沒有被返回:

      然而,Laravel 默認是開啟 session 的(另外還有一些中間件)。這樣能讓基于 Laravel 構建的應用很方便地利用 session 機制將用戶狀態持久化保存。為了 Laravel 框架的用戶更方便而默認開啟 session 反倒讓 Laravel 在性能對比中很受傷。

      另一個常見錯誤是:要么沒有倒出一份優化過的 Composer autoloader ;要么沒有用 php artisan config:cache 指令緩存 Laravel 配置信息 -- 這份緩存能夠大幅度減少 Laravel 的啟動(bootstrap)時間。

      設置環境

      首先,我通過 Laravel Forge 在 DiginalOcean 上創建了一個 2GB 內存的服務器,安裝的是 PHP 7.1 版本。然后安裝 Symfony ,優化 Composer autoloader ,配置 Nginx 通過生產環境下的前端控制器(app.php)運行。并且我還按照 Symfony 生產環境調優指南一步步設置到位。對于 Zend 的配置也類似。

      接下來,針對 PHP 7.1 的 opcache 設置如下(生產環境):

      opcache.enable=1
      opcache.memory_consumption=512
      opcache.interned_strings_buffer=64
      opcache.max_accelerated_files=20000
      opcache.validate_timestamps=0
      opcache.save_comments=1
      opcache.fast_shutdown=1

      安裝 Laravel 時,執行 config:cache Artisan 指令,并且在 app/Http/Kernel.php 文件中將 web 中間件組注釋掉(這些中間件的作用就是讓 Laravel 支持 session)。做完上述修改之后就可以讓三個框架都在無 session 支持的狀態下進行對比了。

      對比結果

      After configuring the projects, I ran a simple test using Apache benchmark, which anyone can recreate:

      三個框架都能正常運行后,終于可以祭出 Apache benchmark 來做簡單的測試了。其實任何人都可以很容易地復現這一測試:

      ab -t 10 -c 10 [http://server.address/]

      下面是測試結果:

      無 Session:

      • Laravel: 609.03 次請求/秒 (平均值)
      • Zend: 559.91 次請求/秒 (平均值)
      • Symfony: 532.97 次請求/秒 (平均值)

      有 Session:

      • Laravel: 521.64 次請求/秒(平均值)
      • Zend: 484.94 次請求/秒 (平均值)
      • Symfony: 439.37 次請求/秒 (平均值)

      原文地址:https://medium.com/@taylorotwell/benchmarking-laravel-symfony-zend-2c01c2b270f8#.kf4gywdmg

      關于作者 王賽
      源碼面前,了無秘密。
      国模吧私拍