Composer running out of memory on every project, Mac OS X
composer-php, laravel-4, php
Solution
EDIT: Before going any further always make sure you're running the latest version of composer, you can update it via `composer self-update`
When you run `composer update` it will calculate the most up-to-date gitref for each of your libraries (or the latest release) and then will install that version of the library. It will then store these versions in the `composer.lock` file.
When you run `composer install`, it simply installs the versions defined in the `composer.lock` file.
The reason `composer update` takes so long and uses so much memory is because it has to trace every library's version, compare it with the version you have defined in your `composer.json` and then check all of that library's dependencies. This is quite an intensive process.
I find that running composer using `hhvm` (you can install it here) speeds up the `composer update` process massively.
Short of that, you just have to live with the high memory usage and increase it in your `php.ini` file. Make sure you update the one that is relevant for your CLI.
EDIT: You should never run `composer update` in the production environment. You should only update your dependencies when you're developing, and then use `composer install` to install your last used set of composer dependencies when you're in a production environment.
Problem
I attempted to install `aws/aws-sdk-php` yesterday on one of my Laravel 4 projects using Composer, I cannot remember exactly the chain of events but it did not install successfully. Ever since, I have been receiving errors that Composer has run out of memory - `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`. I increased the php.ini `memory_limit` to -1 and this still occurs, both in my development and production environments (production is Cent OS 6). Installation completes successfully if I increase the `memory_limit` via the CLI when I run `composer_update` but it takes an eternity. Is there some sort of cache that I need to clear to prevent Composer for running out of memory? I have a feeling that it is still trying to install the AWS SDK every time I run composer update. Composer file ``` { "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" } ```