2013-09-20 4 views
35

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

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. 

ответ

64

попробовать composer update/install -o -vvv и проверить погоду пакета загружается из кэша композитора.

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

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

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

export COMPOSER_PROCESS_TIMEOUT=600 (defaults to 300) 
+0

также пакет записывается в кэш. см. pastebin, он слишком велик для комментариев http://pastebin.com/sb7deyNc тот же результат с командой update.Также продление времени не поможет, я думаю, что это 4-ядерная машина, и она почти не работает. – zajca

+1

С помощью 'php composer.php install -prefer-dist -no-dev' работал для меня. –

+1

Работает для меня тоже. Кто-нибудь знает * почему? – hek2mgl

4

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

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

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

Raise это значение с помощью:

COMPOSER_PROCESS_TIMEOUT=2000 composer install 
0

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

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

php composer.phar install 

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

composer install 

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

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

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

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

17
composer config --global process-timeout 2000 
+4

или без --global, если вы хотите установить в конкретном composer.json – morris4

1

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

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

Solution

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

$process = new Process("composer update"); 
$process->setTimeout(300); // 5 minutes 
$process->run(); 
+0

В фрагменте в вопросе говорится, что' превысил тайм-аут в 300 секунд'. Таким образом, это либо должно быть выше 300, либо тайм-аут не является проблемой (может быть проблема кэширования, за ответы @nifr и @ wormhit). –

Смежные вопросы