Browse Source

Increase memory_limit to 256M if it is lower than this value

Kirill chEbba Chebunin 13 years ago
parent
commit
4f129424e1
2 changed files with 28 additions and 0 deletions
  1. 25 0
      bin/composer
  2. 3 0
      doc/articles/troubleshooting.md

+ 25 - 0
bin/composer

@@ -8,6 +8,31 @@ use Composer\Console\Application;
 error_reporting(-1);
 @ini_set('display_errors', 1);
 
+$memoryInBytes = function ($value) {
+    //$memoryLimit = ini_get('memory_limit');
+
+    $unit = strtolower(substr($value, -1, 1));
+    $value = (int) $value;
+    switch($unit) {
+        case 'g':
+            $value *= 1024;
+        case 'm':
+            $value *= 1024;
+        case 'k':
+            $value *= 1024;
+    }
+
+    return $value;
+};
+
+$memoryLimit = trim(ini_get('memory_limit'));
+// Increase memory_limit if it is lower than 256M
+if ($memoryLimit != -1 && $memoryInBytes($memoryLimit) < 256 * 1024 * 1024) {
+    @ini_set('memory_limit', '256M');
+    printf('Warning: memory_limit was increased from %s to %s' . PHP_EOL . PHP_EOL, $memoryLimit, '256M');
+}
+unset($memoryInBytes);
+
 // run the command application
 $application = new Application();
 $application->run();

+ 3 - 0
doc/articles/troubleshooting.md

@@ -9,6 +9,9 @@ If composer shows memory errors on some commands:
 
 The `memory_limit` ini value should be increased.
 
+> **Note:** Composer internaly increases the memory_limit to 256M.
+> It is a good idea to create an issue for composer if you get memory errors.
+
 Get current value:
 
     php -r "echo ini_get('memory_limit').PHP_EOL;"