回覆列表
  • 1 # 扶尾貓南巷味少

    要明白是什麼影響了Composer的執行速度,必須先理解Composer的執行原理。Composer的大致執行步驟如下:

    1.分析你的composer.json檔案,找到所有需要安裝的第三方的名稱和對應的版本號

    2.2.從本地快取目錄和Packagist伺服器獲取上述的第三方的資訊,包含最新版本,程式碼存放等等

    3.3.分析依賴關係,根據包依賴、版本是否有更新等條件計算出最終需要安裝的第三方的清單

    4.4.根據這份清單第三方的原始碼,根據引數的不同,方式會是用GitClone專案或者是直接Zip包

    5.5.將第三方安裝到本地,一般是安裝在專案下的./vendor目錄,同時根據引數生成用於載入第三方的autoload檔案

    分析:從上述步驟中可以看到Composer在執行時會有5個不同的階段,而其中1、2、3、4步都是會因為各種原因導致Composer執行速度緩慢的,類似composer-proxy這樣的Composer映象/代理站其實已經解決了第1、2步驟速度慢的問題,也就是加快從Packagist版本更新定義檔案慢的這一步。而3這一步由於PHP的執行效率所限制,加上計算依賴的演算法又特別複雜,所以如果用的第三方特別多,就特別容易造成記憶體不足、超時、執行緩慢等問題。

    測試基於6個專案進行composerupdate--dry-run得出,可以看到使用了HHVM之後速度從2分14秒提高到了34秒,平均6秒就完成一個專案的composerupdate,可見速度提升是非常大的。

  • 中秋節和大豐收的關聯?
  • 女人絕經大約多少天才能徹底斷乾淨?需要注意什麼?