композитор убит во время обновления
У меня возникла проблема, я попытался установить новый пакет в свой проект laravel 4.
Но когда я запускаю php composer.phar update
, я получаю следующее:
Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed
Я поискал проблему в Интернете и увидел, что проблема в памяти, я думаю, что у меня недостаточно доступной оперативной памяти, я проверил это, у меня есть около 411 Мб свободного места. Действительно ли композитору нужно больше оперативной памяти? Кто-нибудь может мне помочь, пожалуйста?
Спасибо
6 answers
Сообщение "Убит" обычно означает, что ваш процесс потребляет слишком много памяти, поэтому вам может просто потребоваться добавить больше памяти в вашу систему, если это возможно. На момент написания этого ответа мне пришлось увеличить объем памяти моей виртуальной машины по крайней мере до 768 МБ, чтобы заставить composer update
работать в некоторых ситуациях.
Однако, если вы делаете это на реальном сервере, вам вообще не следует использовать composer update
. Вместо этого вам следует сделать следующее:
- Запустите
composer update
в локальной среде (либо ваша локальная физическая машина или виртуальная машина разработки) - Загрузить или
git push
композитор.файл блокировки - Запустите
composer install
на реальном сервере
composer install
затем будет зачитано из.заблокируйте файл, каждый раз извлекая одни и те же версии, а не находя последние версии каждого пакета. Это снижает вероятность сбоя вашего приложения, а composer использует меньше памяти.
Подробнее читайте здесь: https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
Если, как и я, вы используете какую-то микро-виртуальную машину, которой не хватает памяти, создание файла подкачки делает свое дело:
free -m
mkdir -p /var/_swap_
cd /var/_swap_
#Here, 1M * 2000 ~= 2GB of swap memory
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile
chmod 600 swapfile
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab
#cat /proc/meminfo
free -m
Кстати, не стесняйтесь выбирать другое местоположение/имя файла/размер для файла./var
вероятно, это не лучшее место, но я не знаю, какое место было бы, и меня это редко волнует, так как крошечные серверы в основном используются для целей тестирования.
Это потому, что у вашего хостинга заканчивается память, пожалуйста, проверьте этот учебник
К сожалению, композитору требуется много оперативной памяти и вычислительной мощности. Вот несколько вещей, которые я сделал, которые в совокупности сделали этот процесс терпимым. Это было в моем облачном манеже env.
- Возможно, у вас просто заканчивается оперативная память. Включить обмен: https://www.digitalocean.com/community/search?запрос= как+добавить+поменять местами (примечание: Я думаю, что лучше всего добавить отдельный раздел. Руководство Digitalocean подходит для их среды)
-
service mysql stop
(убейте свою БД/мем-свинью сервисы для освобождения оперативной памяти - не забудьте запустить ее снова!) - используйте дополнительный сеанс терминала, запущенный
top
, чтобы отслеживать потребление памяти/подкачки до завершения процесса. -
composer.phar update --prefer-dist -vvv
(подробный вывод [все еще зависает в некоторых точках при работе] и использует zip-файлы дистрибутива). Может быть, тоже попробовать--dry-run
? - Очевидно, что Composer работает медленнее в более старых версиях PHP (например, 5.3x). Для меня все еще было медленно в 5.5.9...
Вы можете попробовать установить preferred-install
к "dist"
в конфигурации композитора WP CLI - обычно в ~/.wp-cli/packages/composer.json
.
Исправление DigitalOcean, которое не требует дополнительной подкачки с активацией памяти, вот пример для 1 Гб:
В терминале запустите ниже
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1
Вышеуказанное решение будет работать до следующей перезагрузки, после чего своп необходимо будет повторно активировать. Чтобы сохранить его между перезагрузками, добавьте файл подкачки в fstab:
sudo nano /etc/fstab
Откройте указанный выше файл, добавьте строку ниже в файл
/var/swap.1 swap swap sw 0 0
Теперь перезагрузите сервер. Композитор требует, чтобы все работало нормально.