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

藏色散人
發布: 2021-07-03 15:39:03
轉載
1743 人瀏覽過

在記憶體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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!