Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

grahamd's avatar

[Tip] Speed Up Composer

http://www.reddit.com/r/programming/comments/2o1nuk/one_php_line_changed_and_composer_run_70_faster/

As per the recent revelations of PHP's GC being detrimental to Composer.

This should be applicable to Mac / Linux where composer is installed machine wide (/usr/bin).

sudo mv /usr/bin/composer /usr/bin/composer_slow
sudo vi /usr/bin/composer

Add the following into the VI editor (or use whatever you prefer.

#!/bin/sh
php -d zend.enable_gc=0 /usr/bin/composer_slow "$@" --profile

Save this file, then

chmod +x /usr/bin/composer

I always like to see how much my composer is using so I do --profile always.

Your results may vary! Only attempt if you understand what's written above! I haven't tried to see what happens with a composer self-update yet, but who knows. So far I've cut my composer update time in half.

This should be considered a temporary solution since now this is known, composer peoples will most likely be looking at a more permanent solution.

0 likes
4 replies
grahamd's avatar

Brilliant! Amazing it was such a simple fix, that function wasn't one I was aware of!

In any case, this would no longer be a tip, except for making sure everyone is doing a composer self-update!

angelcruzdev's avatar
composer self-update 
[6.1MB/1.78s] Updating to version 1.4.1 (stable channel).
[6.1MB/3.30s]    [6.1MB/3.30s] [6.6MB/8.53s]  Downloading: 100%[6.6MB/8.53s]               [6.1MB/8.60s] B/8.53s] 
[6.1MB/8.63s] Use composer self-update --rollback to return to version 1.3.1
[6.1MB/8.63s] Memory usage: 6.09MB (peak: 10.07MB), time: 8.63s

1 like
Roni's avatar

This is a super old thread but the question still comes up. However there is a thread on stack exchange newer than this one, it came out in 2016 that makes an INSANE composer difference

6 minutes in my case for a super small Laravel project to 7 seconds.

Link: https://stackoverflow.com/questions/28436237/why-is-php-composer-so-slow#38102206

on macOS mojave here are the commands I did

1. networksetup -listallnetworkservices
2. networksetup -setv6off Wi-Fi 
// turn off all IPV6, this had minor benefit
3. composer config --global repo.packagist composer https://packagist.org
// appears to also have big benefit
4. composer global require hirak/prestissimo
// that is insane, its all explained in the link above

Some Comparisons always with the following command

composer update --prefer-dist -vvv --profile
[306.1MB/466.64s] Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
Discovered Package: laravel/nexmo-notification-channel
Discovered Package: laravel/slack-notification-channel
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nothingworks/blade-svg
Discovered Package: nunomaduro/collision
Discovered Package: roniestein/quicktools
Discovered Package: spatie/laravel-view-models
Package manifest generated successfully.
[304.7MB/466.65s] Memory usage: 304.66MB (peak: 463.81MB), time: 466.65s

AFTER 3.

[306.4MB/43.47s] Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
Discovered Package: laravel/nexmo-notification-channel
Discovered Package: laravel/slack-notification-channel
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nothingworks/blade-svg
Discovered Package: nunomaduro/collision
Discovered Package: roniestein/quicktools
Discovered Package: spatie/laravel-view-models
Package manifest generated successfully.
[305.0MB/43.48s] Memory usage: 304.99MB (peak: 463.67MB), time: 43.48s

AFTER 4.

[306.6MB/6.66s] Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
Discovered Package: laravel/nexmo-notification-channel
Discovered Package: laravel/slack-notification-channel
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nothingworks/blade-svg
Discovered Package: nunomaduro/collision
Discovered Package: roniestein/quicktools
Discovered Package: spatie/laravel-view-models
Package manifest generated successfully.
[305.2MB/6.67s] Memory usage: 305.22MB (peak: 463.84MB), time: 6.67s

hopes this saves you from hating/dreading composer update. cheers :)

Please or to participate in this conversation.