PHP Classes

File: public_html/session_index.php

Recommend this page to a friend!
  Packages of Ramesh Narayan Jangid (Sharma)   Open Swoole Microservices   public_html/session_index.php   Download  
File: public_html/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: refactor
Date: 5 days ago
Size: 5,335 bytes
 

Contents

Class file image Download
<?php

/**
 * Session Index
 * 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\Constant;
use
Microservices\App\Env;
use
Microservices\App\CommonFunction;
use
Microservices\App\HttpStatus;
use
Microservices\App\Reload;
use
Microservices\App\Start;
use
Microservices\TestCase\Test;

define('ROOT', realpath(path: __DIR__ . DIRECTORY_SEPARATOR . '../'));
define('ROUTE_URL_PARAM', 'route');

require_once
ROOT . 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 {
        global
$DOMAIN_NAME;
       
// echo $DOMAIN_NAME . PHP_EOL;

        // Load .env(s)
       
foreach ([
           
'.env',
           
'.env.customer.container',
           
'.env.global.container',
           
'.env.rateLimiting',
           
'.env.route'
       
] as $envFilename) {
           
$envDataArr = parse_ini_file(filename: ROOT . DIRECTORY_SEPARATOR . $envFilename);
            foreach (
$envDataArr as $envVarName => $envVarValue) {
               
putenv(assignment: "{$envVarName}={$envVarValue}");
            }
        }

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

       
$httpReqData = [];

       
$httpReqData['streamData'] = true;
       
$httpReqData['server']['domainName'] = $DOMAIN_NAME;
       
$httpReqData['server']['httpMethod'] = $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'])) {
           
$httpReqData['server']['httpRequestIP'] = $request->server['remote_addr'];
        } else {
// check proxy headers
           
if (isset($request->header['x-forwarded-for'])) {
               
$httpReqData['server']['httpRequestIP'] = $request->header['x-forwarded-for'];
            } elseif (isset(
$request->header['x-real-ip'])) {
               
$httpReqData['server']['httpRequestIP'] = $request->header['x-real-ip'];
            }
        }

       
$httpReqData['header'] = $request->header;
        if (isset(
$request->header['authorization'])) {
           
$httpReqData['header']['tokenHeader'] = $request->header['authorization'];
        }
       
$httpReqData['get'] = &$request->get;
        if (isset(
$httpReqData['get'][ROUTE_URL_PARAM])) {
           
$httpReqData['get'][ROUTE_URL_PARAM] = '/' . trim(
               
string: $httpReqData['get'][ROUTE_URL_PARAM],
               
characters: '/'
           
);
        } else {
           
$response->end('Missing route');
            return;
        }

       
$httpReqData['post'] = $request->rawContent();
       
$httpReqData['files'] = &$request->files;
       
$httpReqData['httpRequestHash'] = httpRequestHash(
           
hashArray: [
               
// $_SERVER['HTTP_ACCEPT_ENCODING'] ?? '',
                // $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? '',
                // $_SERVER['HTTP_ACCEPT'] ?? '',
                // $_SERVER['HTTP_USER_AGENT'] ?? ''
           
]
        );

        if (
            isset(
$httpReqData['get'][ROUTE_URL_PARAM])
            &&
in_array(
               
needle: $httpReqData['get'][ROUTE_URL_PARAM],
               
haystack: [
                   
'/all-test',
                   
'/auth-test',
                   
'/open-test',
                   
'/open-test-xml',
                   
'/supp-test'
               
],
               
strict: true
           
)
        ) {
           
$testObj = new Test($httpReqData);
            switch (
$httpReqData['get'][ROUTE_URL_PARAM]) {
                case
'/all-test':
                   
$response->end('<pre>'.print_r(value: $testObj->processAllTest(), return: true));
                    break;
                case
'/auth-test':
                   
$response->end('<pre>'.print_r(value: $testObj->processPrivate(), return: true));
                    break;
                case
'/open-test':
                   
$response->end('<pre>'.print_r(value: $testObj->processPublic(), return: true));
                    break;
                case
'/open-test-xml':
                   
$response->end('<pre>'.print_r(value: $testObj->processPublicXml(), return: true));
                    break;
                case
'/supp-test':
                   
$response->end('<pre>'.print_r(value: $testObj->processPrivateSupplement(), return: true));
                    break;
            }
        } else {
            if (
$httpReqData['get'][ROUTE_URL_PARAM] === '/' . Env::$reloadRequestRoutePrefix) {
               
Reload::process(
                   
httpRequestIp: $httpReqData['server']['httpRequestIP']
                );
               
$response->end();
            } else {
               
ob_start();
                [
$responseHeaderArr, $responseContent, $responseCode] = Start::http(httpReqData: $httpReqData);
                @
ob_clean();

               
$responseCode = $responseCode ?? HttpStatus::$Ok;
               
$response->status($responseCode);

                foreach (
$responseHeaderArr as $headerName => $headerValue) {
                   
$response->header(
                       
$headerName,
                       
$headerValue
                   
);
                }
               
$response->end($responseContent);
            }
        }
    }
);

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

$server->start();

/**
 * Unique HTTP request hash
 *
 * @param array $hashArray Hash array
 *
 * @return string
 */
function httpRequestHash($hashArray): string
{
    return
md5(json_encode(value: $hashArray));
}