EZTABLE IDEAS 是 EZTABLE 成員揮灑熱情和大家分享專業及創意的網誌。 EZTABLE 讓消費者 24 小時都可以在網路訂位全台灣最優質的餐廳,同時提供餐廳經營者 e 化的訂位管理系統 (雲端、iPad、智慧型手機)

PHP Composer parallel install,讓你每月多省六小時

四月 14 2016 Published by under Engineering

logo-composer-transparent2

 

相信有在用 PHP 開發的大家多少都有用到 composer 來協助管理 dependency 的經驗,

composer 可以幫助我們用很簡單的方式管理與使用相關的 packages;

如果沒有聽過或用過的讓我簡單介紹一下:

 

從前我們在寫 PHP 的時候,如果要使用第三方的 library or SDK,

常常會看到在各個檔案開頭的時候有以下的程式碼:

 

require ‘library/foo’;

require ‘library/bar’;

require ‘library/baz’;

 

這樣雖然可以很方便的在各檔案中直接呼叫相關的 library,

不過當專案慢慢越來越大時,

常常會遇到某個檔案需要但卻忘了呼叫;

或是其實某個檔案根本不需要這些 library,

但卻為了方便在某個 config 檔案中把所有 library 一次全部載入,

造成 include 很多不必要的 libary。

 

Composer 的出現可以讓我們用比較"優雅"的方式在 project 中 include 與呼叫各種 3rd party packages,

並且可以輕易的幫我們解決 dependency 的問題。

詳細的使用與安裝方法可以參考官方的說明文件

這邊就不再多詳細說明。

 

等 build 比寫 code 還花時間

當使用 composer 一陣子後,

各位碼農一定有被它"優雅"的速度深深 抱怨 吸引,

常常執行 composer install 卻卡了半天,

或是遇到在CI (Continuous integration) 的環境 build 或跑 unit test時卡住。

 

如何加速

之前有看過國外的大大使用 HHVM 去加速 composer,

不過我個人在 local 測試是沒有太大的差異。

 

直到發現 prestissimo 這個 composer 的 plugin,

安裝方式也非常簡單,

只要透過

 

composer global require hirak/prestissimo

 

就可以啟用享受 parallel install 的效果。

 

根據作者實際安裝 laravel 的測試來看,

直接 composer install 的速度可以從本來 288秒 提升到 26秒 (足足省了快五分鐘)。

 

實際運用

Screen Shot 2016-04-12 at 11.27.10 PM

我們也實際運用在 EZTABLE 的 project 中,

原本透過 travis-ci 的環境執行 composer install 執行完成的時間為 106秒,

透過 parallel install 後只需要25秒,跑一次就省下81秒。

簡單計算一下,

如果每天需要透過CI跑10次,

一個月就可以多省下約 (81 * 10 * 30 / 60 = 405分鐘)

如果大家有什麼其他好方法,

也歡迎大家一起討論唷~

 

P.S. 在travis-ci 的環境中,

由於composer 是預先包好在它們的image中的,

所以記得要先透過 composer self-update 更新才能使用 prestissimo 這個 plugin 唷。

 

歡迎訂閱EZTABLE IDEAS天天都有新玩意

Mark


Related Posts Plugin for WordPress, Blogger...

No responses yet

發表迴響