PHP code example of jeremiah-shaulov / php-web-node
1. Go to this page and download the library: Download jeremiah-shaulov/php-web-node 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/ */
jeremiah-shaulov / php-web-node example snippets
pWebNode\Server;
$server = new Server
( [ 'listen' => '/run/php-web-node/main.sock', // or: '127.0.0.1:10000', '[::1]:10000'
'listen.owner' => 'www-data',
'listen.group' => 'johnny',
'listen.mode' => 0700,
'listen.backlog' => 0,
'user' => 'johnny',
'group' => null,
'pm.max_requests' => 1000,
'pm.max_children' => 2,
'pm.process_idle_timeout' => 30,
'request_terminate_timeout' => 10,
]
);
$server->serve();
if (!isset($n_request)) $n_request = 1;
echo "Request $n_request from ", posix_getpid();
$n_request++;
function get_n_request()
{ static $n_request = 1;
return $n_request++;
}
echo "Request ", get_n_request(), " from ", posix_getpid();
ion get_n_request()
{ static $n_request = 1;
return $n_request++;
}
PhpWebNode\set_request_handler
( __FILE__,
function()
{ echo "Request ", get_n_request(), " from ", posix_getpid();
}
);
nction PhpWebNode\header;
function get_n_request()
{ static $n_request = 1;
return $n_request++;
}
PhpWebNode\set_request_handler
( __FILE__,
function()
{ header("Expires: 0"); // this is PhpWebNode\header()
echo "Request ", get_n_request(), " from ", posix_getpid();
}
);
pWebNode\Server;
$n_requests = 0;
$requests_time_took = 0.0;
echo "Started\n";
$server = new Server
( [ 'listen' => '/run/php-web-node/main.sock',
'listen.owner' => 'www-data',
'listen.group' => 'johnny',
'listen.mode' => 0700,
'listen.backlog' => 0,
'user' => 'johnny',
'group' => null,
'pm.max_requests' => 1000,
'pm.max_children' => 10,
'pm.process_idle_timeout' => 30,
'request_terminate_timeout' => 10,
]
);
$server->onerror
( function($msg)
{ echo $msg, "\n";
}
);
$server->onrequestcomplete
( function($pool_id, $messages, $time_took) use(&$n_requests, &$requests_time_took)
{ $n_requests++;
$requests_time_took += $time_took;
}
);
$server->set_interval
( function() use(&$n_requests, &$requests_time_took)
{ echo "$n_requests requests", ($n_requests==0 ? "" : " (".round($requests_time_took/$n_requests, 3)." sec avg)"), "\n";
$n_requests = 0;
$requests_time_took = 0.0;
},
6
);
$server->serve();
public function onrequest(callable $onrequest_func=null, int $catch_input_limit=0)
pWebNode\{Server, Request};
$server = new Server
( [ 'listen' => '/run/php-web-node/main.sock',
'listen.owner' => 'www-data',
'listen.group' => 'johnny',
'listen.mode' => 0700,
'listen.backlog' => 0,
'user' => 'johnny',
'group' => null,
'pm.max_requests' => 1000,
'pm.max_children' => 5,
'pm.process_idle_timeout' => 30,
'request_terminate_timeout' => 10,
]
);
$server->onrequest
( function(Request $request)
{ $db_id = $request->get['db-id'] ?? null;
return $db_id=='a' ? 'A' : 'B';
},
8*1024
);
$server->serve();
$server->onrequest
( function(Request $request)
{ if (empty($request->get['page-id']))
{ http_response_code(404);
PhpWebNode\header('Expires: '.gmdate('r', time()+60*60));
throw new Exception("Page doesn't exist"); // cancel the request
}
}
);
const DB_DSN = 'mysql:host=localhost;dbname=information_schema';
const DB_USER = 'root';
const DB_PASSWORD = 'root';
const RECONNECT_EACH_N_REQUESTS = 10;
function get_pdo()
{ static $pdo = null;
static $n_request = 0;
if ($n_request++ % RECONNECT_EACH_N_REQUESTS == 0)
{ $pdo = new PDO(DB_DSN, DB_USER, DB_PASSWORD);
$n_request = 1;
}
else
{ // Reset the connection
$pdo->exec("ROLLBACK");
}
return $pdo;
}
PhpWebNode\set_request_handler
( __FILE__,
function()
{ $pdo = get_pdo();
$cid = $pdo->query("SELECT Connection_id()")->fetchColumn();
echo "Connection ID = $cid";
}
);
pWebNode\Server;
$server = new Server
( [ 'listen' => '/run/php-web-node/main.sock',
'listen.owner' => 'www-data',
'listen.group' => 'johnny',
'listen.mode' => 0700,
'listen.backlog' => 0,
'user' => 'johnny',
'group' => null,
'pm.max_requests' => 1000,
'pm.max_children' => 5,
'pm.process_idle_timeout' => 30,
'request_terminate_timeout' => 10,
]
);
$server->serve();
sudo php server.php
PHP Fatal error: Cannot redeclare get_n_request()