PHP Classes

File: session_index.php

Recommend this page to a friend!
  Packages of Ramesh Narayan Jangid (Sharma)   Open Swoole Microservices   session_index.php   Download  
File: session_index.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Open Swoole Microservices
Implement microservices using Open Swoole
Author: By
Last change: DocBlcck
Copyright
Date: 3 days ago
Size: 4,483 bytes
 

Contents

Class file image Download
<?php

/**
 * Start
 * php version 8.3
 *
 * @category Start
 * @package Openswoole_Microservices
 * @author Ramesh N. Jangid (Sharma) <polygon.co.in@gmail.com>
 * @copyright © 2026 Ramesh N. Jangid (Sharma)
 * @license MIT https://opensource.org/license/mit
 * @link https://github.com/polygoncoin/Openswoole-Microservices
 * @since Class available since Release 1.0.0
 */

use Openswoole\Http\Server;
use
Openswoole\Http\Request;
use
Openswoole\Http\Response;

use
Microservices\App\Constants;
use
Microservices\App\Env;
use
Microservices\App\Start;
use
Microservices\TestCases\Tests;

define('PUBLIC_HTML', __DIR__);
define('ROUTE_URL_PARAM', 'route');

require_once
PUBLIC_HTML . DIRECTORY_SEPARATOR . 'Autoload.php';
spl_autoload_register(callback: 'Microservices\Autoload::register');

$server = new Server('127.0.0.1', 9501);

$server->on(
   
'start',
    function(
Server $server): void {
        echo
'Openswoole http server is started at http://127.0.0.1:9501' . "\n";
    }
);

$server->on(
   
'request',
    function(
Request $request, Response $response): void {

       
// Load .env(s)
       
foreach (['.env','.env.rateLimiting','.env.enable','.env.cidr','.env.container'] as $envFilename) {
           
$env = parse_ini_file(filename: __DIR__ . DIRECTORY_SEPARATOR . $envFilename);
            foreach (
$env as $key => $value) {
               
putenv(assignment: "{$key}={$value}");
            }
        }

       
Constants::init();
       
Env::$timestamp = time();
       
Env::init();

       
$http = [];
       
$http['server']['host'] = 'localhost';
       
// $http['server']['host'] = 'public.localhost';
       
$http['server']['method'] = $request->server['request_method'];

        if (
            ((int)
getenv('DISABLE_REQUESTS_VIA_PROXIES')) === 1
           
&& !isset($request->server['remote_addr'])
        ) {
           
$response->end("Invalid request");
            return;
        }

        if (isset(
$request->server['remote_addr'])) {
           
$http['server']['ip'] = $request->server['remote_addr'];
        } else {
// check proxy headers
           
if (isset($request->header['x-forwarded-for'])) {
               
$http['server']['ip'] = $request->header['x-forwarded-for'];
            } elseif (isset(
$request->header['x-real-ip'])) {
               
$http['server']['ip'] = $request->header['x-real-ip'];
            }
        }

       
$http['header'] = $request->header;
       
$http['get'] = &$request->get;
       
$http['post'] = $request->rawContent();
       
$http['files'] = &$request->files;

        if (
            isset(
$http['get'][ROUTE_URL_PARAM])
            &&
in_array(
               
needle: $http['get'][ROUTE_URL_PARAM],
               
haystack: [
                   
'/tests',
                   
'/auth-test',
                   
'/open-test',
                   
'/open-test-xml',
                   
'/supp-test'
               
]
            )
        ) {
           
$tests = new Tests();
            switch (
$http['get'][ROUTE_URL_PARAM]) {
                case
'/tests':
                   
$response->end('<pre>'.print_r(value: $tests->processTests(), return: true));
                    break;
                case
'/auth-test':
                   
$response->end('<pre>'.print_r(value: $tests->processAuth(), return: true));
                    break;
                case
'/open-test':
                   
$response->end('<pre>'.print_r(value: $tests->processOpen(), return: true));
                    break;
                case
'/open-test-xml':
                   
$response->end('<pre>'.print_r(value: $tests->processXml(), return: true));
                    break;
                case
'/supp-test':
                   
$response->end('<pre>'.print_r(value: $tests->processSupplement(), return: true));
                    break;
            }
        } else {
           
ob_start();
            [
$responseheaders, $responseContent, $responseCode] = Start::http(http: $http, streamData: true);
           
ob_clean();

           
$response->status($responseCode);
            foreach (
$responseheaders as $k => $v) {
               
$response->header($k, $v);
            }
           
$response->end($responseContent);
        }
    }
);

/*
 * https://openswoole.com/docs/modules/swoole-server/configuration
 */
$server->set(
    [
       
// Disable Coroutines for Traditional PHP Sessions
       
'enable_coroutine' => false,
    ]
);

$server->start();