Почему композитор устанавливает таймауты через 300 секунд?

40

У меня есть небольшой проект, сделанный в symfony2, когда я пытаюсь построить его на моем сервере, он всегда терпит неудачу при распаковке symfony. Сборка была в порядке, и внезапно композитор не будет распаковывать symfony, и я ничего не изменил. Я попытался построить с Дженкинсом, а также вручную с bash с тем же результатом. Это не разрешает проблему, а также подключение к Интернету на моем сервере в порядке.

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
 - Installing symfony/symfony (v2.3.4)
 Downloading: 100%
[Symfony\Component\Process\Exception\ProcessTimedOutException]
The process "unzip '/path/vendor/symfony/symfony/6116f6f3
d4125a757858954cb107e64b' -d 'vendor/composer/b2f33269' && chmod -R u+w 'vendor/composer/b2f33269'" exceeded the timeout of 300 seconds.
Теги:
composer-php
timeout

9 ответов

78
Лучший ответ

попробуйте composer update/install -o -vvv и проверьте, загружен ли пакет из кеша композитора.

если да, попробуйте очистить кеш композитора или попробуйте добавить -cache-dir=/dev/null.

Чтобы принудительно загрузить архив вместо источников клонирования, используйте параметр --prefer-dist в сочетании с --no-dev.

В противном случае вы можете попытаться повысить значение тайм-аута процесса композитора:

export COMPOSER_PROCESS_TIMEOUT=600   ( defaults to 300 )
  • 0
    ну пакет записывается в кеш. см. pastebin, он слишком велик для комментария pastebin.com/sb7deyNc тот же результат с командой обновления. Также продление времени не поможет, я думаю, что это 4-ядерный компьютер, и он почти не работает.
  • 1
    Используя php composer.php install --prefer-dist --no-dev работал для меня.
Показать ещё 5 комментариев
27
composer config --global process-timeout 2000
  • 9
    или без --global, если вы хотите установить в конкретный composer.json
21

Сам композитор налагает ограничение на то, как долго он будет использоваться для удаленной операции git. Взгляд на Документация Composer подтверждает, что эта переменная окружения COMPOSER_PROCESS_TIMEOUT регулирует это. Переменной установлено значение по умолчанию 300 (секунд), которое, по-видимому, недостаточно для операции большого клона с использованием медленного интернет-соединения.

Поднимите это значение, используя:

COMPOSER_PROCESS_TIMEOUT=2000 composer install
9

Самый простой способ - добавить опцию конфигурации в файл composer.json, Добавить процесс-тайм-аут 0, Вот и все. Это работает где угодно.

{
  .....
  "scripts": {
    "start": "php -S 0.0.0.0:8080 -t public public/index.php"
  },
  "config": {
    "process-timeout":0
  }
}
4

У компонента Symfony установлен тайм-аут процесса, равный 60. Вот почему вы получаете такие ошибки:

[Symfony\Component\Process\Exception\ProcessTimedOutException]     
The process "composer update" exceeded the timeout of 60 seconds. 

Решение

Установите время ожидания до 5 минут или более

$process = new Process("composer update");
$process->setTimeout(300); // 5 minutes
$process->run();
  • 0
    Фрагмент в вопросе говорит, что exceeded the timeout of 300 seconds . Поэтому оно должно быть выше 300, иначе время ожидания не является проблемой (может быть проблема с кэшированием, согласно ответам @nifr и @ wormhit).
4

Удаление кеша композитора работало для меня.

rm -rf ~/.composer/cache/*
3

Это старый поток, но я выяснил, что причиной истечения времени был запуск отладчика php (PHPStorm прослушивал соединения xdebug), который вызвал тайм-аут процесса. Когда я закрывал PHPStorm или отключал расширение xdebug, тайм-аут не возникал.

  • 1
    Это действительно было причиной моего тайм-аута, VS Code отлаживал, и я оставил его, слушая соединения ...
0

старая тема, но новая проблема для меня. При попытке установить google/apiclient (это не удалось на google/apiclient-services) на виртуальной машине Ubuntu в хосте Windows 10 не работали никакие решения.

Заметив, что "исполняемый файл защиты от вредоносных программ" Windows занимает значительные циклы ЦП при установке/обновлении этого композитора, я отключил "защиту в реальном времени" на компьютере с Windows 10, и обновление/установка моего компоновщика сработала !!

Надеюсь, что это помогает кому-то.

  • 0
    Это помогло мне! У меня была точно такая же проблема при установке google / apiclient на виртуальную машину Ubuntu, работающую в Windows 10 через VirtualBox, и это решило проблему.
0

Это проблема медленной NFS. Кэш записи композитора в каталог NFS. Вы должны установить композитор глобально и переписать путь кэширования.

Это не работает:

php composer.phar install

Используя это:

composer install

Перед этим запуском вы должны настроить компоновщик по всему миру. Смотрите https://getcomposer.org/doc/00-intro.md#globally

Кроме того, вы должны добавить эти строки в свой config.json:

"config": {
    "cache-dir": "/var/cache/composer"
}

Работает для меня.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню