p8pb — PHP 8 Persistent Boss

Versión: 0.4.0-alpha-zeus

1. Introducción

p8pb es un contenedor de aplicaciones PHP persistente, modular y auditable, diseñado para ejecutar módulos empaquetados sin reiniciar el intérprete por cada request. Su arquitectura está optimizada para:

NOTA:
Este proyecto está en fase alpha y está orientado a uso interno. Desarrollado por Benjamín Sánchez Cárdenas.

2. Funcionalidades Clave

2.1. Ejecución Persistente con RoadRunner

Utiliza RoadRunner para mantener el intérprete PHP en memoria entre requests, eliminando la sobrecarga de reinicio. Esto resulta en:

2.2. Módulos Empaquetados (.p8mod)

Los módulos se distribuyen como archivos ZIP con extensión .p8mod, conteniendo:

mi-modulo/
├── p8manifest.json  # Manifiesto con metadatos
├── bootstrap.php    # Lógica de inicialización
└── handler.php      # Manejador de requests HTTP

Ejemplo de p8manifest.json:

{
  "name": "mi_modulo",
  "version": "1.0.0",
  "entry": "bootstrap.php",
  "sandbox": "wordpress"  // Habilita limpieza de globales
}

2.3. Request Sandboxing

Aisla cada request para evitar contaminación de variables globales. Especialmente útil para:

2.4. CLI Integrada

Comandos disponibles para gestión:

Comando Descripción
status Muestra el estado del runtime y módulos activos.
deploy Despliega un módulo .p8mod.
list Lista los módulos desplegados.

2.5. Logging y Ciclo de Vida

Incluye:

3. Ventajas de p8pb

Ventaja Impacto
Rendimiento Reducción de hasta ~70% en latencia vs. PHP-FPM tradicional (benchmarks internos).
Modularidad Despliegue independiente de funcionalidades (ej.: APIs, tasks en segundo plano).
Seguridad El sandboxing previene fugas de memoria y conflictos entre requests.
Compatibilidad Funciona con aplicaciones legacy (WordPress, Laravel) sin modificaciones.
Auditoría Logs estructurados y ciclo de vida controlado para cumplimiento normativo.

4. ¿Qué Podemos Lograr con p8pb?

4.1. Optimización de WordPress

Ejecutar WordPress en modo persistente con sandboxing para:

4.2. Microservicios en PHP

Desplegar módulos independientes para:

4.3. Entornos de Desarrollo

Facilita:

EJEMPLO PRÁCTICO:
Un módulo hello.p8mod demuestra el sandboxing con un contador global que se reinicia en cada request (ver Sección 5).

5. Ejemplo: Módulo hello.p8mod

5.1. Estructura del Módulo

hello/
├── p8manifest.json
├── bootstrap.php
└── handler.php

5.2. Código del Manejador (handler.php)

<?php
use Psr\Http\Message\ServerRequestInterface;
use Nyholm\Psr7\Response;

return function (ServerRequestInterface $request, $container) {
    $path = $request->getUri()->getPath();
    if ($path === '/hello/') {
        global $hello_counter;
        $hello_counter = ($hello_counter ?? 0) + 1;

        return new Response(200, ['Content-Type' => 'application/json'],
            json_encode([
                'message' => 'Hola desde p8pb!',
                'counter' => $hello_counter,  // Siempre 1 por sandboxing
                'module'  => 'hello'
            ])
        );
    }
    return null;
};

5.3. Resultado

Al llamar a /hello/ múltiples veces, el contador siempre muestra 1 gracias al sandboxing:

{
  "message": "Hola desde p8pb!",
  "counter": 1,
  "module": "hello"
}

6. Requisitos e Instalación

6.1. Requisitos

6.2. Instalación

git clone https://github.com/tu-usuario/p8pb.git
cd p8pb
composer install --no-dev

6.3. Iniciar el Servidor

./vendor/bin/rr serve -c config/roadrunner.yaml

El servidor escucha en http://localhost:8080.

7. Conclusión

p8pb es una solución innovadora para:

Ideal para equipos que buscan escalabilidad y mantenibilidad en proyectos PHP modernos o legacy.

8. Contacto

Para consultas técnicas, colaboración o soporte:

bdsyndicate@zohomail.com
NOTA:
Este proyecto está en desarrollo activo. Reporta issues o sugerencias al correo acima.