php - para - Error fatal-Demasiados archivos abiertos
jboss demasiados ficheros abiertos (5)
¿Cómo puedes subir el límite de apertura de archivos (Linux o Max OS)?
ulimit -n 10000
Resuelve el problema con phpunit
y / y phpdbg
y Warning: Uncaught ErrorException: require([..file]): failed to open stream: Too many open files in [...]
Intento ejecutar PHPUnit Tests en mi nueva máquina y recibo este error:
Error fatal de PHP: excepción no detectada ''UnexpectedValueException'' con mensaje ''RecursiveDirectoryIterator :: __ construct (/ usr / lib / php / pear / File / Iterator): no se pudo abrir dir: Hay demasiados archivos abiertos en / usr / lib / php / pear /File/Iterator/Factory.php:114
El mismo código en la vieja máquina funciona bien ...
Nuevo entorno de máquina: Versión de PHP: PHP 5.3.21 (cli) Anterior: PHP 5.3.14
PHPUnit salida cada vez:
................EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 65 / 66 ( 98%)
E
Time: 34 seconds, Memory: 438.50Mb
There were 50 errors:
1) XXXXXXXXXXX
PHP Fatal error: Uncaught exception ''UnexpectedValueException'' with message ''RecursiveDirectoryIterator::__construct(/usr/lib/php/pear/File/Iterator): failed to open dir: Too many open files'' in /usr/lib/php/pear/File/Iterator/Factory.php:114
Después de "despertar" mi computadora del modo de suspensión, encontré este problema.
Reiniciando php-fpm como lo ha arreglado. Clásico apagar y volver a encender la solución.
sudo /etc/init.d/php-fpm restart
Creo que esto puede estar relacionado con xdebug, que recientemente agregué a php.
En PHP, antes de la ejecución, prueba esto.
exec(''ulimit -S -n 2048'');
Esto puede ser una limitación en el servidor donde se ejecuta el código. Cada sistema operativo solo permite un cierto número de archivos / identificadores / sockets abiertos. Este límite generalmente se reduce aún más cuando el servidor está virtualizado. En un servidor Linux, puede verificar el límite actual con ulimit -n
, si tiene acceso de root, puede aumentarlo con el mismo comando. Supongo que también hay un método para el servidor de Windows. De lo contrario, no hay mucho que pueda hacer al respecto (excepto pedirle a su proveedor o administrador que lo incremente).
Más limitaciones configurables:
In /etc/security/limits.conf
soft nofile 1024
hard nofile 65535
Increase ulimit by "ulimit -n 65535"
echo 65535 > /proc/sys/fs/file-max
In /etc/sysctl.conf
fs.file-max=65535
No almacene objetos DirectoryIterator para más adelante; recibirá un error que dice "demasiados archivos abiertos" cuando almacena más que el límite del sistema operativo (generalmente 256 o 1024).
Por ejemplo, esto producirá un error si el directorio tiene demasiados archivos:
<?php
$files = array();
foreach (new DirectoryIterator(''myDir'') as $file) {
$files[] = $file;
}
?>
Presumiblemente, este enfoque también requiere mucha memoria.
fuente: http://php.net/manual/pt_BR/directoryiterator.construct.php#87425