PHP code example of pivotphp / reactphp

1. Go to this page and download the library: Download pivotphp/reactphp library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

pivotphp / reactphp example snippets



PivotPHP\Core\Core\Application;
use PivotPHP\ReactPHP\Providers\ReactPHPServiceProvider;

// Criar aplicação PivotPHP
$app = new Application();

// Registrar provider ReactPHP
$app->register(ReactPHPServiceProvider::class);

// Definir rotas
$app->get('/', function($request, $response) {
    return $response->json([
        'message' => 'Hello from PivotPHP ReactPHP!',
        'timestamp' => time(),
        'version' => '0.1.0'
    ]);
});

// POST com parsing automático de JSON
$app->post('/api/data', function($request, $response) {
    $data = $request->body; // JSON automaticamente parseado
    
    return $response->json([
        'received' => $data,
        'processed' => true,
        'server_time' => date('c')
    ]);
});

// Rota com parâmetros (sintaxe PivotPHP)
$app->get('/user/:id', function($request, $response) {
    $id = $request->param('id');
    
    return $response->json([
        'user_id' => $id,
        'profile' => "Profile for user {$id}"
    ]);
});

echo "🚀 Servidor PivotPHP ReactPHP iniciando...\n";
echo "📡 Acesse: http://localhost:8080\n";

use PivotPHP\ReactPHP\Middleware\SecurityMiddleware;

// Adicionar middleware de segurança (isolamento automático)
$app->use(SecurityMiddleware::class);

// Ou configurar manualmente
$app->use(function($request, $response, $next) {
    // Lógica de segurança customizada
    return $next($request, $response);
});

use PivotPHP\ReactPHP\Monitoring\HealthMonitor;

$app->get('/health', function($request, $response) {
    $monitor = new HealthMonitor();
    return $response->json($monitor->getHealthStatus());
});

// Métricas detalhadas
$app->get('/metrics', function($request, $response) {
    return $response->json([
        'memory' => memory_get_usage(true),
        'peak_memory' => memory_get_peak_usage(true),
        'uptime' => $this->getUptime(),
        'requests_handled' => $this->getRequestCount(),
    ]);
});

use PivotPHP\ReactPHP\Helpers\JsonHelper;
use PivotPHP\ReactPHP\Helpers\ResponseHelper;
use PivotPHP\ReactPHP\Helpers\RequestHelper;

$app->post('/api/secure', function($request, $response) {
    // Identificação segura do cliente
    $clientIp = RequestHelper::getClientIp($request, $trustProxies = true);
    $clientId = RequestHelper::getClientIdentifier($request);
    
    // Parsing JSON type-safe
    $data = JsonHelper::decode($request->body);
    
    if (!$data) {
        // Response de erro padronizada
        return ResponseHelper::createErrorResponse(
            400, 
            'Invalid JSON data',
            ['client_ip' => $clientIp]
        );
    }
    
    return $response->json([
        'processed' => true,
        'client_id' => $clientId,
        'data_keys' => array_keys($data)
    ]);
});

return [
    'server' => [
        'debug' => env('APP_DEBUG', false),
        'streaming' => env('REACTPHP_STREAMING', false),
        'max_concurrent_requests' => env('REACTPHP_MAX_CONCURRENT', 100),
        'request_body_size_limit' => env('REACTPHP_BODY_LIMIT', 16777216), // 16MB
    ],
    'security' => [
        'enable_request_isolation' => true,
        'enable_memory_guard' => true,
        'enable_blocking_detection' => true,
    ],
    'monitoring' => [
        'enable_health_checks' => true,
        'metrics_retention_hours' => 24,
    ],
];

// Sempre usar middleware de segurança
$app->use(SecurityMiddleware::class);

// Validar entrada
$app->post('/api/user', function($request, $response) {
    $data = $request->body;
    
    // Validação básica
    if (!isset($data['email']) || !filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
        return ResponseHelper::createErrorResponse(400, 'Invalid email');
    }
    
    // Sanitização
    $email = filter_var($data['email'], FILTER_SANITIZE_EMAIL);
    
    return $response->json(['email' => $email]);
});
bash
# Via comando Artisan (recomendado)
php artisan serve:reactphp --host=0.0.0.0 --port=8080

# Ou diretamente
php examples/server.php
nginx
upstream pivotphp_backend {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
    server 127.0.0.1:8083;
}

server {
    listen 80;
    server_name api.example.com;
    
    location / {
        proxy_pass http://pivotphp_backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}