Dans notre processus de développement actuel, certaines données doivent être obtenues en temps réel
Par exemple, les informations de commande dans le système ERP, l'approbation du processus dans le système OA ; , etc. doivent être traités en temps opportun, alors nous ne pouvons plus utiliser le protocole http, bien sûr, nous pouvons également utiliser le mécanisme d'interrogation ;
Mais la plupart des demandes d'interrogation sont inutiles, gaspillant la bande passante et les ressources du serveur.
À l'heure actuelle, nous devons utiliser le protocole websocket pour répondre à ce besoin commercial
Préparation :
Installation Extension ; PHP-swoole
<?php new class { private $_serv = null; public function __construct() { $this->_serv = new swoole_websocket_server('0.0.0.0', 6552); $this->_serv->set(array( 'worker_num' => 2, 'dispatch_mode' => 3, 'log_file' => 'swoole.log', )); //增加个监听端口 $udpworker = $this->_serv->listen("127.0.0.1", 6553, SWOOLE_SOCK_UDP); $udpworker->on('Packet', function ($serv, $data, $addr) { $data = json_decode($data, true); if(!empty($data)){ //你的业务逻辑 } }); $this->_serv->on('open', array($this, 'onStart')); $this->_serv->on('message', array($this, 'onMessage')); $this->_serv->on('close', array($this, 'onClose')); $this->_serv->start(); } public function onStart($serv, $request) { echo "server: connect success with fd {$request->fd}\n"; } //format:'{"school_class_id":"1","school_id":"2"}' public function onMessage($serv, $frame) { /**start*你的业务逻辑***/ } public function onClose($serv, $fd) { echo "client {$fd} closed\n"; } } ?>
Principe :
Créez d'abord un objet serveur websocket et écoutez sur le port 0.0 .0.0:6552, puis utilisez l'objet de service pour écouter le port UDP 6553. Les messages client sont envoyés à l'interface 6553 puis envoyés à l'utilisateur via le port 6552. Pour plus de connaissances sur php, veuillez visiter letutoriel php !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!