为什么作曲家会在300秒后安装超时?

zaj*_*jca 57 timeout symfony composer-php

当我尝试在我的服务器上构建它时,我在symfony2中创建了一个小项目,在解压缩symfony时总是失败.构建是好的,突然作曲家不会解压缩symfony,我没有改变任何东西.我尝试使用Jenkins构建,也尝试使用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.
Run Code Online (Sandbox Code Playgroud)

Nic*_*ich 95

尝试composer update/install -o -vvv检查是否正在从作曲家的缓存中加载包.

如果是,请尝试清除作曲家的缓存或尝试添加-cache-dir=/dev/null.

要强制下载存档而不是克隆源,请--prefer-dist结合使用该选项--no-dev.

否则你可以尝试提高作曲家的进程超时值:

export COMPOSER_PROCESS_TIMEOUT=600   ( defaults to 300 )
Run Code Online (Sandbox Code Playgroud)

  • 一个常见的问题是,当涉及到重磁盘i/o时,NFS共享速度很慢......即缓存文件夹受此影响.您可以通过将缓存文件夹移动到`/ dev/shm /`来解决此问题.在作曲家的情况下,你可以使用`--cache-dir =/dev/shm/composer/cache`.在**[本文](http://www.whitewashing.de/2013/08/19/speedup_symfony2_on_vagrant_boxes.html)**中了解有关它的更多信息,该目标针对symfony2与vagrant nfs共享的性能技巧.很高兴你解决了你的问题.您可能仍然会考虑接受我的答案,因为11个赞成票+评论清楚地表明它对其他人有帮助. (4认同)
  • 使用`php composer.php install --prefer-dist --no-dev` 对我有用。 (2认同)
  • 也适用于我。有谁知道*为什么*? (2认同)
  • 过了一会儿,我弄清楚了为什么会发生这种情况,原因是 NFS 速度慢。我不知道为什么,因为它在本地网络上,但我切换到 sshfs 并且它工作正常。 (2认同)

Ali*_*eni 35

composer config --global process-timeout 2000
Run Code Online (Sandbox Code Playgroud)

  • 或者没有--global,如果你想在特定的composer.json中设置 (10认同)

rig*_*eng 23

最简单的方法是为composer.json文件添加配置选项,添加进程超时0,这就是全部.它适用于任何地方

{
  .....
  "scripts": {
    "start": "php -S 0.0.0.0:8080 -t public public/index.php"
  },
  "config": {
    "process-timeout":0
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 从 Composer 1.9 开始,您还可以在每个脚本的基础上禁用进程超时。例如。`"start": ["Composer\\Config::disableProcessTimeout","php -S 0.0.0.0:8080 -t public public/index.php"],` (6认同)
  • 这就是 @Ali Motameni 的答案为您所做的,以及答案下的评论的作用(作者:@morris4)。他们实际上都为您更改了相应的composer.json 文件,从而更改了此配置值。一种是在全局的composer.json 文件中更改它,另一种是在注释中更改它在当前项目的composer.json 文件中。 (2认同)

Tah*_*sin 22

Composer本身限制了它允许远程git操作的时间.查看Composer文档确认环境变量COMPOSER_PROCESS_TIMEOUT对此进行了管理.该变量设置为默认值300(秒),对于使用慢速Internet连接的大型克隆操作来说,这显然是不够的.

使用以下方法提高此值:

COMPOSER_PROCESS_TIMEOUT=2000 composer install
Run Code Online (Sandbox Code Playgroud)


Had*_*adu 8

这是一个旧线程,但我发现超时的原因是运行 php 调试器(PHPStorm 正在监听 xdebug 连接),这导致了进程超时。当我关闭 PHPStorm 或禁用 xdebug 扩展时,没有发生超时。


Day*_*ion 8

旧线程但对我来说是新问题。当尝试在 Windows 10 主机内的 Ubuntu VM 上安装 google/apiclient(在 google/apiclient-services 上失败)时,这里没有任何解决方案起作用。

在执行此 Composer 安装/更新时注意到 Windows 的“反恶意软件可执行文件”占用大量 CPU 周期后,我在 Windows 10 计算机上禁用了“实时保护”,并且我的 Composer 更新/安装工作了!

希望对某人有帮助。

  • 它帮助了我!我在通过 VirtualBox 在 Windows 10 上运行的 Ubuntu 虚拟机上安装 google/apiclient 时遇到了完全相同的问题,这解决了该问题。 (2认同)

wor*_*hit 5

删除作曲家缓存对我有用。

rm -rf ~/.composer/cache/*
Run Code Online (Sandbox Code Playgroud)