首頁  >  文章  >  開發工具  >  Composer運行中斷並顯示Killed的問題

Composer運行中斷並顯示Killed的問題

藏色散人
藏色散人轉載
2021-07-03 15:38:281774瀏覽

在記憶體1GB(分配給PHP的最大運行記憶體是128MB)的Linode VPS上執行Composer安裝Drupal模組,沒有成功的提示,只是提示KILLED。

透過修改分配給PHP的運行記憶體把PHP記憶體由128MB提高到256MB以後,報錯具體了一點:

Fatal error: Out of memory (allocated 754982912) (tried to allocate 33554440 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleSet.php on line 84

加到512MB:

Fatal error: Out of memory (allocated 832577536) (tried to allocate 16777216 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223

再加到768MB,報錯又變成一句簡單的KILLED了。

看來Composer的胃口不小啊。怎麼辦?

1.最簡單粗暴而最有效的方法就是把伺服器升級,並為伺服器加記憶體。實在窮心疼錢的話,就放棄Composer或曲線救國。

2.備選方案就是給伺服器分配點假的記憶體糊弄一下伺服器,SWAP快取了解一下。大威而鋼這裡有貼文:SWAP問答:SWAP是什麼? SWAP有什麼用? SWAP怎麼用?

大威而鋼是透過把伺服器的SWAP快取增加到2.5 GB來解決的。當然,假的終究是假的,硬碟做的緩存,在效能上肯定是比不過真正的記憶體的。

3.Stack Overflow上還有人分享了一個方法可能有效,不過大威而鋼沒有試過。那就是在本機開發環境上運行Composer,成功以後把composer.lock上傳或git push到生產伺服器上,然後在生產伺服器上執行composer install。

composer install會讀取.lock檔案裡面的設定並直接拉取相同版本的軟體包下來,而不是找出每個軟體包的最新版本。這樣composer對記憶體的需求量就會降低一些。

不過這種方法本身很麻煩,成功率又堪憂,所以能不用就不用吧。

最後,分享給大家一個不用修改php.ini設定文件,暫時解禁composer運行記憶體限制的方法:

php -d memory_limit=-1 /usr/local/bin/composer require/isntall/update

或:

php -d memory_limit=-1 `which composer` require/isntall/update

以上是Composer運行中斷並顯示Killed的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:daweibro。如有侵權,請聯絡admin@php.cn刪除