9

我最近在安装 symfony2 包时遇到了 composer 的问题。

我的 VM 上的可用内存是700M,但还不够。它只有在我停止一些服务并释放后才起作用1.2G

Composer 文档对此没有详细说明:

注意: Composer 在内部将 memory_limit 增加到512M. 如果您在使用 Composer 时遇到内存问题,请考虑创建问题单以便我们进行调查。

我的问题是——作曲家在内部做了什么使用这么多内存的事情?

在我看来,这个过程很fairly简单,基本上检查模块之间的依赖关系,然后下载模块存档,并修改某些文件。我认为协商具有X稳定性的所有模块版本的算法一点也不简单,但这是其他编程语言的包管理器之间的常见问题,还是作曲家优化问题?(例如,我没有听说过 RubyGems 的此类问题)。

4

1 回答 1

7

大多数其他依赖项管理器没有完整的SAT求解器并进行“近似”,这需要更少的比较(因此更少的 cpu,更少的内存),但在某些情况下可能会产生无效的结果或无法解决的问题,其中包管理器(如 bower)会问你什么想要做。Composer 求解器通常会找到解决方案或最终找到冲突。

所以简而言之,这是一个设计选择,但我意识到这也是由于内存使用的问题。有一些策略应该会降低内存使用率,但即使尝试它们也是耗时的事情,而且没有多少人有足够的项目知识或时间来实现这一目标,所以目前它有点停滞不前。

于 2013-09-10T14:41:34.133 回答