Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php composer安装持续消耗所有RAM内存_Php_Symfony_Composer Php - Fatal编程技术网

Php composer安装持续消耗所有RAM内存

Php composer安装持续消耗所有RAM内存,php,symfony,composer-php,Php,Symfony,Composer Php,在我正在进行的Symfony 2.7项目中,我通过Composer 1.6.5使用了很多软件包 因为几天之后,我无法再添加新包或重建composer.lock。它的内存一直不足 当我尝试添加一个新包时,我开始注意到这个问题。但问题不在于这个方案。因为作为测试,我现在正试图通过删除composer.lock文件并执行以下命令来重建composer.lock: php -d memory_limit=-1 C:/ProgramData/ComposerSetup/bin/composer.phar

在我正在进行的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
当我在运行该命令时跟踪我的ram消耗时,它永远不会超过1.5G限制,而我的Windows机器仍然有大量可用ram

我注意到,当composer尝试解析一个特定的包并将其写入缓存时,通常会抛出错误。一个特定的软件包确实会消耗大量内存(高达0.5G)。一些研究告诉我,这个软件包没有问题,它已经在我们的项目中使用了三年多了&因此在composer.json中使用了三年多。我还在Mac上运行了相同的composer install命令,它确实解决了这个包并将其写入缓存,但后来它尝试删除另一个不相关的包时失败了,因为那时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" "$@"
奇怪的是,直到几天前,当一位作曲家要求我制作一个软件包时,它还可以正常工作

以下是我的三个问题:

  • 为什么作曲家要消耗这么多内存
  • 为什么composer忽略我的内存限制=-1设置,拒绝使用超过1.5G的内存
  • 我在某个地方读到,我可以为composer配置交换空间。这是一种选择吗
  • 以下是我的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"
      }
    }
    
    {
    “名称”:“库尔索尔”,
    “许可证”:“专有”,
    “类型”:“项目”,
    “自动加载”:{
    “psr-4”:{
    “”:“src/”,
    “SymfonyStandard\\”:“app/SymfonyStandard/”
    },
    “文件”:[
    “src/helpers.php”,
    “app/AppKernel.php”
    ]
    },
    “自动加载开发”:{
    “psr-4”:{
    “测试\\”:“测试/”
    }
    },
    “要求”:{
    “php”:“>=5.3.9”,
    “symfony/symfony”:“2.7.*”,
    “条令/orm”:“2.5.*”,
    “条令/dbal”:“=3.0.2”,
    “IncenteV/composer参数处理程序”:“~2.0”,
    “jms/序列化程序包”:“~2.0.0”,
    “gedmo/条令扩展”:“2.4.3”,
    “符号/秒表”:“^2.7”,
    “vich/上传包”:“^0.14.0”,
    “nesbot/carbon”:“^1.21”,
    “swiftmailer/swiftmailer”:“^5.4”,
    “mtdowling/cron表达式”:“^1.0”,
    “cron/cron包”:“^1.0”,
    “小胡子/小胡子”:“^2.9”,
    
    “leafo/Lesshpp”:“如果它可以帮助其他人,这里有一个快速的解决方案

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


    通过下载一个64位php并运行64位php版本的composer解决了这个问题。这给了我高达3G的空间,足以运行composer

    composer。composer确实使用了大量内存…您的例外情况是内存限制约为268MB,因此内存限制似乎失败。您是否尝试设置一个高RAM值而不是-1e 4G?Composer真的很饿…同时,在更大的项目上至少2GB对我来说也是正常的…我已经尝试将其显式设置为-1、1G、2G和3G。当使用任务管理器跟踪ram消耗时,它(php)当它达到1.5G时总是会被杀死。异常是指尝试分配x个字节。我认为,这不是内存限制,这正是sustem试图释放的内容,或者说。php CLI的php.ini是否可能覆盖您的内存设置?不能确定,但我的php.ini(XAMPP)也设置为-1。此外,到目前为止,我们尝试在4台计算机上运行相同的composer安装命令,每台计算机都有(稍微)不同的PHP.ini和PHPStorm设置)。其中一个是使用docker容器进行项目的MAC。一台PC有32G RAM,在我运行命令时仅使用35%。它总是导致内存不足,并且总是在1.5G时终止PHP。1.5G限制说明了composer的内部内存限制。请参见此处