Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

609
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda