Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

598
Vistas
PHP Docker: ¿es posible configurar ulimit en tiempo de ejecución?

En un proyecto en el que estoy trabajando, xdebug tarda aproximadamente 1 hora en generar cobertura. He experimentado con phpdbg , pero encuentro el siguiente error en mi conjunto de pruebas:

 stream_select(): You MUST recompile PHP with a larger value of FD_SETSIZE. It is set to 1024, but you have descriptors numbered at least as high as 7228. --enable-fd-setsize=8192 is recommended, but you may want to set it to equal the maximum number of open files supported by your system, in order to avoid seeing this error again at a later date.

Estoy usando php:7.0.33-fpm (sí, lo sé, estamos trabajando para actualizar las versiones de PHP :))

Usando ulimit en la línea de comando o confiando en docker-compose para configurarlo , la salida todavía cree que está configurada en 1024. En realidad, la salida actual de ulimit -n dentro de mi contenedor es más de 1 millón si no intento configurar a través de otro mecanismo.

¿Hay algún mecanismo en el que esto se pueda configurar a través del tiempo de ejecución sin tener que compilar nuestro propio contenedor php desde cero?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Esta advertencia se puede activar con el siguiente fragmento de PHP:

 <?php $fds = []; for ($i = 0; $i < PHP_FD_SETSIZE; $i++) { // PHP_FD_SETSIZE how FD_SETSIZE is exposed to userland $fds[] = fopen(__FILE__, 'r'); } $read = $fds; $write = []; $except = []; echo sprintf("FD_SETSIZE=%d", PHP_FD_SETSIZE) . "\n"; stream_select($read, $write, $except, 0); /* * Warning: stream_select(): You MUST recompile PHP with a larger value of FD_SETSIZE. * It is set to 1024, but you have descriptors numbered at least as high as 1027. * --enable-fd-setsize=2048 is recommended, but you may want to set it * to equal the maximum number of open files supported by your system, * in order to avoid seeing this error again at a later date. in /in/ZfBsg on line 14 */

FD_SETSIZE es una constante definida por POSIX (consulte la página de manual de select(2) ). Si bien la advertencia lo lleva a creer que esta advertencia puede mitigarse recompilando php con --enable-fd-setsize=[algún valor más grande], esto no es cierto. FD_SETSIZE no se puede cambiar en tiempo de ejecución, ya que su valor se determina al compilar el núcleo.

Miré el código fuente de PHP por un momento y no estoy seguro de por qué existe --enable-fd-setsize, ya que no parece hacer nada (aunque no probé esto en Windows).

Las únicas soluciones a este problema parecen ser:

  • evitar stream_select
  • evitar abrir muchos archivos
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda