コード例 #1
0
    {
        foreach ($this->clients as $client) {
            call_user_func(array($client, $func), $v1, $v2, $v3, $v4);
        }
    }
}
SetLogFile(dirname($argv[0]) . "/logfile.txt");
LogWrite("############################## Restarted ######################################");
$serverState = ServerState::getInstance();
//LogWrite($serverState->dump());
$LS1 = new LPECListeningSocket($LINN_HOST, $LINN_PORT, 'LPECClientSocket', $serverState, 30000);
$LS2 = new LinnDSListeningSocket(0, 9050, 'LinnDSClientSocket', $serverState, 30000);
$LS2->setLPECListeningSocket($LS1);
//$LS3 = new LinnDSwsListeningSocket(0, 9051, 'LinnDSClientSocket', $serverState, 30000);
//$LS3->setLPECListeningSocket($LS1);
//$LS1->dump();
//$LS2->dump();
//$LS3->dump();
$SS = new SocketServer();
$SS->addListeningSocket($LS1);
$SS->addListeningSocket($LS2);
//$SS->addListeningSocket($LS3);
LogWrite("LinnDS-jukebox-daemon starts...");
try {
    $SS->run();
} catch (Exception $e) {
    LogWrite($e->getMessage());
}
?>

コード例 #2
0
<?php

include 'SocketServer.php';
class ProxyListener extends SocketListener
{
    public function processData($client, $data)
    {
        $client->broadcast($data);
    }
}
$server = new SocketServer();
$id1 = $server->open(8002);
$id2 = $server->open(8003);
$listener = new ProxyListener();
$server->addListener($listener);
// Run the server until killed
while ($server->run()) {
}
コード例 #3
0
<?php

$serv = new SocketServer();
$serv->run('0.0.0.0', 9504);
class SocketServer
{
    protected $serv;
    //swoole server
    const MAX_PACKAGE_LEN = 8000000;
    //max data accept
    function run($host, $port)
    {
        register_shutdown_function(array($this, 'errorHandler'));
        $this->serv = new swoole_server($host, $port);
        $this->serv->set(array('max_request' => 2000, 'dispatch_mode' => 3, 'worker_num' => 5, 'reactor_num' => 2, 'backlog' => 128, 'open_cpu_affinity' => 1, 'open_tcp_nodelay' => 1, 'tcp_defer_accept' => 5, 'max_conn' => 10000, 'task_worker_num' => 10, 'task_ipc_mode' => 2, 'message_queue_key' => 0x72000100, 'open_length_check' => true, 'package_max_length' => 999999999, 'package_length_type' => 'N', 'package_length_offset' => 0, 'package_body_offset' => 4));
        $this->serv->on('receive', array($this, 'onReceive'));
        $this->serv->on('close', array($this, 'onClose'));
        $this->serv->on('task', array($this, 'onTask'));
        $this->serv->on('finish', array($this, 'onFinish'));
        $this->serv->start();
    }
    function onReceive($serv, $fd, $from_id, $data)
    {
        $packet = json_decode(substr($data, 4), true);
        //todo::包可能解析失败
        $packet["socketfd"] = $fd;
        $task_id = $serv->task(json_encode($packet));
        //todo::任务可能下发失败
    }
    function onTask($serv, $task_id, $from_id, $data)
    {