web-dev-qa-db-fra.com

Pourquoi le compositeur installe-t-il les délais d'attente après 300 secondes?

J'ai un petit projet réalisé dans symfony2 lorsque je tente de le construire sur mon serveur, il échoue toujours lors de la décompression de symfony. Build était OK et tout à coup le compositeur ne décompresse pas Symfony et je n'ai rien changé. J'ai essayé de construire avec Jenkins et aussi manuellement de bash avec le même résultat. Ce n'est pas un problème d'autorisations et la connexion Internet sur mon serveur est OK.

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.
43
zajca

essayez composer update/install -o -vvv et vérifiez si le paquet est en cours de chargement depuis le cache du compositeur.

si oui, effacez le cache du compositeur ou essayez d'ajouter -cache-dir=/dev/null.

Pour forcer le téléchargement d'une archive au lieu de cloner des sources, utilisez l'option --prefer-dist en combinaison avec --no-dev.

Sinon, vous pouvez essayer d'augmenter la valeur de délai d'attente du processus du compositeur:

export COMPOSER_PROCESS_TIMEOUT=600   ( defaults to 300 )
81
nifr
composer config --global process-timeout 2000
27
Ali Motameni

Le compositeur lui-même impose une limite de temps pendant laquelle l'opération git à distance est autorisée. Un examen de la documentation Composer confirme que la variable d’environnement COMPOSER_PROCESS_TIMEOUT régit cela. La variable est définie sur une valeur par défaut de 300 (secondes), ce qui n'est apparemment pas suffisant pour une opération de clonage importante utilisant une connexion Internet lente. 

Augmentez cette valeur en utilisant:

COMPOSER_PROCESS_TIMEOUT=2000 composer install
21
Tahir Yasin

La méthode la plus simple consiste à ajouter une option de configuration au fichier composer.json, Ajouter un processus de temporisation 0, c'est tout. Cela fonctionne n'importe où.

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

La suppression de la mémoire cache du compositeur a fonctionné pour moi.

rm -rf ~/.composer/cache/*
4
wormhit

Le délai imparti au processus du composant Symfony est fixé à 60 par défaut. C'est pourquoi vous obtenez des erreurs comme celle-ci:

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

Solution

Définir le délai d'attente à 5 minutes ou plus

$process = new Process("composer update");
$process->setTimeout(300); // 5 minutes
$process->run();
4
Mahmoud Zalt

C'est un vieux fil de discussion, mais j'ai découvert que la raison de l'expiration du délai était l'exécution d'un débogueur php (PHPStorm écoutait les connexions xdebug), ce qui a entraîné l'expiration du processus. Lorsque j'ai fermé le PHPStorm ou désactivé l'extension xdebug, aucun délai n'a été dépassé.

3
Hadu

C'est le problème lent NFS. Le compositeur écrit le cache dans le répertoire NFS. Vous devez installer composer globalement et réécrire le chemin du cache.

Cela ne fonctionne pas:

php composer.phar install

En utilisant ceci:

composer install

Avant cette exécution, vous devez configurer le compositeur globalement. Voir ceci https://getcomposer.org/doc/00-intro.md#globally

De plus, vous devez ajouter ces lignes à votre config.json:

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

Travaille pour moi.

0
user3890355

vieux fil mais nouveau problème pour moi. Aucune solution ne fonctionnait ici lors de la tentative d'installation de google/apiclient (cela a échoué sous google/apiclient-services) sur un Ubuntu VM au sein d'un hôte Windows 10.

Après avoir remarqué que "l'exécutable antimalware" de Windows prenait beaucoup de temps lors de l'installation/mise à jour de ce composeur, j'ai désactivé la "protection en temps réel" sur la machine Windows 10, et la mise à jour/l'installation de mon composeur a fonctionné !! 

J'espère que ça aide quelqu'un.

0
Daydream Nation