作曲家安装不断消耗所有 RAM 内存

2024-05-01

在我正在开发的 Symfony 2.7 项目中,我通过 Composer 1.6.5 使用了很多包。

几天后我无法再添加新包或重建composer.lock。它总是内存不足。

当我尝试添加新包时,我开始注意到这个问题。但问题不在于那个包。因为作为测试,我现在尝试通过删除该composer.lock文件并执行以下命令来重建我的composer.lock:

php -d memory_limit=-1 C:/ProgramData/ComposerSetup/bin/composer.phar install -vvv

当我在运行该命令时跟踪我的内存消耗时,它从未超过 1.5G 限制,而我的 Windows 计算机仍然有足够的可用内存。

我注意到,当作曲家尝试解析一个特定的包并将其写入缓存时/之后,通常会引发该错误。那个特定的包确实消耗了大量内存(高达 0.5G)。一些研究告诉我,这个包没有任何问题,它已经在我们的项目中,因此在composer.json 中已经三年多了。我还在Mac上运行相同的composer安装命令,它确实设法解析了这个包并将其写入缓存,但后来当它尝试删除另一个不相关的包时失败了,因为那时Mac上的内存已经满了完全消耗。

这是我得到的错误:

...
Downloading http://packagist.org/p/kriswallsmith/spork%24dafe3f5808d858c7b15bd464923710bf24d5f7457b7b6c50a298ca1bea1a35a0.json
Writing C:/Users/david/AppData/Local/Composer/repo/https---packagist.org/provider-kriswallsmith$spork.json into cache

Fatal error: Out of memory (allocated 1424228352) (tried to allocate 268435456 bytes) in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/DependencyResolver/Solver.php on line 220
PHP Fatal error:  Out of memory (allocated 1424228352) (tried to allocate 268435456 bytes) in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/DependencyResolver/Solver.php on line 220
/cygdrive/c/ProgramData/ComposerSetup/bin/composer: line 10: 10284 Segmentation fault      php "${dir}/composer.phar" "$@"

奇怪的是,直到几天前,当一个使用作曲家需要我正在开发的一个包时,它工作得很好。

这是我的 3 个问题:

  1. 为什么composer要消耗这么多内存?
  2. 为什么composer忽略我的memory_limit=-1设置并拒绝使用超过1.5G?
  3. 我在某处读到我可以为作曲家配置交换空间。这是一个选择吗?

这是我的composer.json 文件:

{
  "name": "kulsol",
  "license": "proprietary",
  "type": "project",
  "autoload": {
    "psr-4": {
      "": "src/",
      "SymfonyStandard\\": "app/SymfonyStandard/"
    },
    "files": [
      "src/helpers.php",
      "app/AppKernel.php"
    ]
  },
  "autoload-dev": {
    "psr-4": {
      "Tests\\": "tests/"
    }
  },
  "require": {
    "php": ">=5.3.9",
    "symfony/symfony": "2.7.*",
    "doctrine/orm": "2.5.*",
    "doctrine/dbal": "<2.6",
    "doctrine/doctrine-bundle": "~1.4",
    "twig/extensions": "~1.0",
    "symfony/assetic-bundle": "~2.3",
    "symfony/swiftmailer-bundle": "^2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~4.0",
    "sensio/framework-extra-bundle": "~3.0,>=3.0.2",
    "incenteev/composer-parameter-handler": "~2.0",
    "jms/serializer-bundle": "~2.0.0",
    "gedmo/doctrine-extensions": "2.4.3",
    "symfony/stopwatch": "^2.7",
    "vich/uploader-bundle": "^0.14.0",
    "nesbot/carbon": "^1.21",
    "swiftmailer/swiftmailer": "^5.4",
    "mtdowling/cron-expression": "^1.0",
    "cron/cron-bundle": "^1.0",
    "mustache/mustache": "^2.9",
    "leafo/lessphp": "<0.5",
    "friendsofsymfony/elastica-bundle": "^3.1",
    "guzzlehttp/guzzle": "^6.1",
    "oro/doctrine-extensions": "^1.0",
    "willdurand/geocoder-bundle": "^4.0",
    "rlerdorf/opcache-status": "dev-master",
    "henrikbjorn/stampie-bundle": "^1.0",
    "stof/stampie-extra": "^0.2.0",
    "isinlor/buzz-bundle": "^1.0",
    "ocramius/proxy-manager": "~1.0",
    "beberlei/DoctrineExtensions": "^1.0",
    "doctrine/doctrine-migrations-bundle": "^1.0",
    "ramsey/uuid": "3.*",
    "phpoffice/phpexcel": "1.8.1",
    "misd/guzzle-bundle": "v1.1.5",
    "php-http/guzzle6-adapter": "^1.1",
    "php-http/httplug-bundle": "^1.3",
    "egeloen/google-map": "2.0.x-dev",
    "egeloen/google-map-bundle": "dev-master#432438624d74f0384cc727b3609af3cc4314b152",
    "ezyang/htmlpurifier": "^4.8",
    "tfox/mpdf-port-bundle": "1.3.*",
    "ramsey/uuid-doctrine": "^1.2",
    "oneup/uploader-bundle": "^1.7",
    "webmozart/assert": "^1.2",
    "league/tactician-bundle": "~0.4",
    "kuleuven-gbiomed/message": "^0.1.0",
    "danielstjules/stringy": "^3.0",
    "html2text/html2text": "^4.0",
    "kuleuven-gbiomed/collection-utilities": "^0.1",
    "kuleuven/distribution-api": "*",
    "jms/serializer": "^1",
    "friendsofsymfony/rest-bundle": "^2.3"
  },
  "require-dev": {
    "sensio/generator-bundle": "~2.3",
    "kahlan/kahlan": "^3.1",
    "phpunit/phpunit": "^5.7",
    "doctrine/doctrine-fixtures-bundle": "^2.3",
    "friendsofphp/php-cs-fixer": "^2.2",
    "liip/functional-test-bundle": "^1.7",
    "vimeo/psalm": "^0.3.51",
    "phpmd/phpmd": "^2.6"
  },
  "scripts": {
    "post-root-package-install": [
      "SymfonyStandard\\Composer::hookRootPackageInstall"
    ],
    "post-install-cmd": [
      "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
    ],
    "post-update-cmd": [
      "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
    ]
  },
  "extra": {
    "symfony-app-dir": "app",
    "symfony-web-dir": "web",
    "symfony-assets-install": "relative",
    "incenteev-parameters": {
      "file": "app/config/parameters.yml"
    },
    "symfony-var-dir": "var",
    "symfony-bin-dir": "bin",
    "symfony-tests-dir": "tests"
  },
  "repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/Isinlor/SensioBuzzBundle.git"
    },
    {
      "type": "vcs",
      "url": "https://github.com/kuleuven-gbiomed/collection-utilities.git"
    },
    {
      "type": "path",
      "url": "distribution/API/"
    }
  ],
  "config": {
    "bin-dir": "bin"
  }
}

如果它可以帮助其他人,这是一个快速解决方案

事实证明,这是一个与 windows-xampp 相关的问题。 xampp 仅支持 32 位版本的 php。这又意味着它始终只允许内存限制为 1.5G(或 2G,其中 0.5G 分配在其他地方)。它有效地忽略 php.ini 中或运行时设置的任何内存限制设置。

通过下载 64 位 php 并从该 64 位 php 版本运行 Composer 解决了这个问题。这给了我 3G,足够运行 Composer

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

作曲家安装不断消耗所有 RAM 内存 的相关文章

  • HTML 上传 MAX_FILE_SIZE 似乎不起作用

    我想知道隐藏字段是如何命名的MAX FILE SIZE应该工作吗
  • CodeIgniter 项目给出 303/压缩错误

    尝试设置一个基于 CodeIgniter 的项目进行本地开发 LAMP 堆栈 并且一旦更新了所有配置文件 这意味着我成功地为 CodeIgniter 生成了有意义的引导错误 我在浏览器中收到此错误 Chrome Error 330 net
  • 如何在 Laravel 模型中将 String 转换为 int

    这是我的解决方案 我在模型类中写了这个 评分是字符串类型 code int ratings 但我需要在从数据库检索 ratings 时更改它 我该怎么做 我们有一个模型的属性称为cast您可以在其中指定列名称 如下所示 The attrib
  • 使用 try {} catch {} 与 if {} else {} 相比有何优势

    我正在从 php 中的普通 mysql 切换到 PDO 并且我注意到测试错误的常见方法是使用 try catch 组合而不是 if else 组合 该方法的优点是什么 我可以使用一个 try catch 块而不是多个嵌套的 if else
  • PHP HSV 到 RGB 公式理解

    我可以转换RGB价值观HSV使用以下代码 r r 255 g g 255 b b 255 h 0 s 0 v 0 min min min r g b max max max r g b r max min v max if r 0 h 0
  • 从 CSV 到 MySQL 的换行问题

    我正在将 csv 文件导入 MySQL 除了文件中的换行符之外 一切正常 我的 csv 行之一如下所示 42 E A R Classic Earplugs ear images ear classic jpg 5 Proven size s
  • 从 PHP SoapServer 返回 PHP 数组

    我对 Soap 的 创建服务端 还比较陌生 所以提前对我正在思考的任何术语表示歉意 是否可以从使用 PHP 的 SoapServer 类设置的远程过程 Soap 服务返回 PHP 数组 我有一个 WSDL 通过盲目遵循教程构建 部分看起来像
  • 在 Woocommerce 存档页面中显示产品星级评定和价格下方的计数 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在 woocommerce 存档页面中 我想将评级移至价格下方 那可能吗 我怎样才能做到呢 这是我想要的 任何帮助表示赞赏 My 网站
  • 不能简单地使用 PostgreSQL 表名(“关系不存在”)

    我正在尝试运行以下 PHP 脚本来执行简单的数据库查询 db host localhost db name showfinder username user password password dbconn pg connect host
  • PHP diff() 给出不正确的值,其中 $date1 = '2016-03-01'

    我使用下面的代码来确定一年内的员工服务 datePay1 new DateTime date1 datePay2 new DateTime date2 interval datePay1 gt diff datePay2 vYears in
  • Zoopla 沙箱出现 cURL http 标头错误

    我正在为房地产经纪人开发代码 以通过他们的数据源将房产上传到 Zoopla 我在将所需的配置文件添加到所需的 http 标头时遇到问题 文档中唯一的示例是来自 Linux 的测试 echo branch reference test cur
  • WooCommerce 从前端(而不是管理员)隐藏订单项元

    我有一些我不希望客户看到的订单项元详细信息 在帐户信息下的查看订单页面上 我找到了一个过滤器 可以从管理员 我仍然希望看到它 中删除这些数据 但找不到类似的过滤器来从前端 应该隐藏它 中删除它 这是将从后端管理中删除它的代码 对我来说毫无用
  • 在javascript中通过window.location传递数据

    我试图通过 window location 传递数据 数据在 del id img album 中可用 我想通过 window location 发送多个值 window location save php type deldownload
  • PHP Web 应用程序 (Magento) 遭到黑客攻击;这段黑客代码有什么作用?

    我刚刚安装的 Magento 1 3 2 4 被黑了 你能告诉我这段代码的目的是什么吗 另外 如何阻止这种情况以及如何发现漏洞 谢谢 function net match network ip ip arr explode network
  • Twitter API 响应并不总是按预期返回实体媒体

    考虑使用以下命令检索 Twitter 用户的收藏夹列表 abraham twitteroauth PHP 库 https github com abraham twitteroauth https api twitter com 1 1 f
  • PHP 会话未保存

    我把这句话写在我网站每一页的第一行 include restd php 和restd php包含以下几行 session start if isset SESSION id else header location index php 我面
  • 多维数组将每个列表数组存储在另一个数组中

    我嵌套了可能有 2 或 3 层深度的多维数组 在它里面我可能有也可能没有列表数组 我需要循环数组 Array 0 gt Array id gt 1 name gt cat name 1 list gt Array 1 gt swgdgbdg
  • laravel 模型保存后、保存前等回调

    Laravel 中是否有回调 例如 afterSave beforeSave etc 我进行了搜索 但一无所获 如果没有这样的事情 实施它的最佳方法是什么 Thanks 实现保存前后回调以扩展的最佳方法save 功能 这是一个简单的例子 c
  • 将日期时间舍入到最后一小时

    我试图寻找这个 但我找不到我想做的事情的好例子 我在 MySQL 数据库中得到了日期时间值 当使用该值时必须向下舍入 例如 所有这些值 2013 04 20 07 14 422013 04 20 07 19 512013 04 20 07
  • php laravel Blade 模板不渲染

    我正在尝试使用 Laravel 和 twitter bootstrap 设置一个基本页面 我安装了 Laravel 并获得了通用的 你在这里 或 w e 图像 这样看起来很闪亮 对于 twitter bootstrap 我在 public

随机推荐