{ 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()); } ?>
<?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()) { }
<?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) {