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

203
Vistas
Escritura del demonio del servidor de aplicaciones con mod_proxy_fcgi y nginx proxy_pass

Comienzo a escribir un demonio (linux), que escucha las solicitudes a través de mod_proxy_fcgi o nginx proxy_pass. Una aplicación similar es php-fpm. Mi daemon es algo así como c-fpm, hablando con otros daemons específicos (sockets locales de Unix) para hacer el trabajo con el manejo de la base de datos y producir salida html.

Busco ejemplos de cómo manejar la entrada fcgi del servidor web. Con google no encuentro lo que busco.

El fragmento de código después de obtener la entrada:

 clientHdl = sockserver->accept(sockserver, CPSOCK_KEEPALIVE, nullptr, 0); if( clientHdl > -1 ) { PTStream stream = nullptr; ssize_t rdBytes = -1; stream = CPStreamCreate(pool); rdBytes = sockserver->readToStream(sockserver, clientHdl, stream); if(rdBytes > 0 ) { char* ptr = stream->getPointer(stream); size_t s = stream->getSize(stream); LOGINFO(("%s: [%s]", prefix, ptr )); } stream->free(stream); shutdown(clientHdl, SHUT_RDWR); close( clientHdl ); }

La pregunta es: ¿qué hacer con ptr? Para mi comienzo, es muy difícil leer y comprender la fuente de php-fpm. Me encantaría, para encontrar un ejemplo más simple.

Gracias de antemano

Editar: el siguiente código me abrió los ojos:

 if(rdBytes > 0 ) { char* ptr = stream->getPointer(stream); size_t s = stream->getSize(stream); char z; char pbuf[200]; size_t pi = 0; for( size_t i = 0; i < s; i++ ) { z = ptr[i]; if( z < 32 ) { static const char h[]="0123456789ABCDEF"; pbuf[ pi++ ] = '['; pbuf[ pi++ ] = h[ (z >> 4) & 0xF ]; pbuf[ pi++ ] = h[ z & 0xF ]; pbuf[ pi++ ] = ']'; } else { pbuf[ pi++ ] = z; } if((pi + 5) > sizeof(pbuf)) { pbuf[pi] = '\0'; LOGINFO(("%s: %s", prefix, pbuf)); pi = 0; } } pbuf[pi] = '\0'; LOGINFO(("%s: %s", prefix, pbuf)); }

Entonces, ahora no sé si debería eliminar mi pregunta o esperar alguna información interesante de usted.

over 4 years ago · Santiago Trujillo
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