Example #1
0
<?php

namespace {
    use php\concurrent\ExecutorService;
    use php\io\IOException;
    use php\lang\Environment;
    use php\net\ServerSocket;
    $server = new ServerSocket();
    $server->bind('localhost', 8080);
    $service = ExecutorService::newFixedThreadPool(5);
    // create a thread pool
    echo "Start HTTP Server on http://localhost:8080/ ...\n";
    while (true) {
        $socket = $server->accept();
        echo "Connect client ... \n";
        $service->execute(function () use($socket) {
            // processing a http request in a thread
            ob_implicit_flush(true);
            $out = $socket->getOutput();
            try {
                $out->write("HTTP/1.1 200 OK\r\n");
                $out->write("Content-Type: text/html\r\n");
                $out->write("Connection: close\r\n\r\n");
                $out->write("Hello world!");
                $out->flush();
            } catch (IOException $e) {
                echo "Error: " . $e->getMessage(), "\n";
            } finally {
                // JPHP supports `finally` as in PHP 5.5
                $socket->shutdownOutput();
            }
Example #2
0
--TEST--
Test response
--FILE--
<?php 
use php\net\ServerSocket;
use php\net\URL;
use php\webserver\WebRequest;
use php\webserver\WebResponse;
use php\webserver\WebServer;
$server = new WebServer(function (WebRequest $request, WebResponse $response) {
    $response->writeToBody('foobar');
    $response->status = 404;
});
$server->port = ServerSocket::findAvailableLocalPort();
$server->run();
$conn = null;
$conn = (new URL("http://localhost:{$server->port}/"))->openConnection();
$conn->requestMethod = 'GET';
$conn->setRequestProperty('Content-Type', 'text/html');
$conn->setRequestProperty('Accept', 'text/plain');
$conn->connect();
var_dump($conn->responseCode);
var_dump($conn->getErrorStream()->readFully());
?>
--EXPECT--
int(404)
string(6) "foobar"
Example #3
0
$webserverapi = new WebServerAPI($config->get("api.webserver.token"), $config->get("api.webserver.token.allowed"), $config->get("api.webserver.whitelist"), $config->get("api.webserver.whitelist.ip"));
$rsa->SetPrivate($config->get("crypto.rsaN"), $config->get("crypto.rsaE"), $config->get("crypto.rsaD"));
$pooling = new DatabasePooling($config->get("db.hostname"), $config->get("db.port"), $config->get("db.username"), $config->get("db.password"), $config->get("db.name"), $config->get("db.pool.minsize"), $config->get("db.pool.maxsize"));
$database = new Database();
$database->pool =& $pooling;
$cache = new CacheLoader($database);
$roommanager = new RoomManager($database, $cache);
$roommanager->getRoom(16);
$roommanager->getRoom(17);
$roommanager->getRoom(18);
$events = array();
$autoloader->loadEvents();
Console::WriteLine("Loaded " . count($events) . " events !");
$furnidataparser->setCache();
Console::WriteLine("Loaded " . count($furnidataparser->floorItems) . " floor items and " . count($furnidataparser->wallItems) . " wall items !");
$server = new ServerSocket();
$server->bind($config->get("game.tcp.bindip"), $config->get("game.tcp.port"));
$service = ThreadPool::createFixed($config->get("game.tcp.conlimit"));
$index = new IndexManager();
if ($config->get("api.webserver.enabled")) {
    $webserverapi->start($config->get("api.webserver.port"));
}
Console::WriteLine("Server -> READY! (" . $config->get("game.tcp.bindip") . ":" . $config->get("game.tcp.port") . ")");
$environment = new Environment();
foreach ($autoloader->getClassArray() as $class) {
    $environment->importClass($class);
}
foreach ($autoloader->getEventsArray() as $event) {
    $environment->importClass($event);
}
while (true) {