首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Composer在每个项目上耗尽内存,Mac

Composer在每个项目上耗尽内存,Mac
EN

Stack Overflow用户
提问于 2014-02-16 18:35:54
回答 10查看 24.2K关注 0票数 17

昨天我试着用Composer在我的Laravel 4项目中安装aws/aws-sdk-php,我记不起具体的事件链,但它没有成功安装。从那以后,我就收到了作曲家内存不足的错误-- Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 32 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

我将php.ini memory_limit提高到-1,这种情况在我的开发和生产环境中仍然存在(生产分为OS 6)。如果我在运行memory_limit时通过CLI增加composer_update,那么安装就会成功完成,但这需要很长时间。

是否需要清除某种缓存,以防止Composer内存不足?我有一种感觉,每次我运行composer更新时,它仍然试图安装AWS。

编写器文件

代码语言:javascript
运行
复制
{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "laravel/framework": "4.0.*",
        "rtablada/package-installer": "dev-master",
        "mogreet/mogreet-php": "dev-master",
        "twilio/laratwilio": "dev-master",
        "balloon/elephant.io": "dev-master",
        "facebook/php-sdk": "dev-master",
        "way/generators": "dev-master",
        "codesleeve/asset-pipeline": "dev-master",
        "natxet/CssMin": "dev-master"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php",
            "app/libraries"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan optimize"
        ],
        "pre-update-cmd": [
            "php artisan clear-compiled"
        ],
        "post-update-cmd": [
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "dev"
}
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2014-02-16 18:46:48

编辑:在更进一步之前,一定要确保您正在运行最新版本的composer,您可以通过composer self-update对其进行更新。

当您运行composer update时,它将为您的每个库(或最新版本)计算最新的gitref,然后安装该库的版本。然后将这些版本存储在composer.lock文件中。

当您运行composer install时,它只是安装在composer.lock文件中定义的版本。

composer update花费这么长时间使用这么多内存,是因为它必须跟踪每个库的版本,将其与您在composer.json中定义的版本进行比较,然后检查库的所有依赖项。这是一个相当密集的过程。

我发现使用hhvm运行composer (您可以安装它这里)可以极大地加快composer update进程的速度。

除此之外,您只需忍受高内存使用率,并在php.ini文件中增加内存使用量。确保更新与CLI相关的内容。

编辑:您不应该在生产环境中运行composer update。您应该只在开发时更新您的依赖项,然后在生产环境中使用composer install安装您上一次使用的composer依赖项集。

票数 29
EN

Stack Overflow用户

发布于 2014-02-17 01:42:54

目前,作曲家身上有一个错误,导致内存耗尽。

如果你这样做了

代码语言:javascript
运行
复制
composer install

然后删除供应商内部的文件夹

代码语言:javascript
运行
复制
rm -rf vendor/laravel

并这样做

代码语言:javascript
运行
复制
composer update

你会得到这个错误的。这是一个错误,它不应该耗尽内存。

现在,您可以通过以下操作来解决这个问题:

代码语言:javascript
运行
复制
php -d memory_limit=-1 /usr/local/bin/composer update

另外,检查这条线,他们即将修复这个问题。

票数 22
EN

Stack Overflow用户

发布于 2014-04-01 13:15:48

尝尝这个。它解决了我的问题,我想修复它的更好的方法,而不是更新内存。

代码语言:javascript
运行
复制
sudo composer self-update
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21815635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档