本文实例讲述了PHP使用swoole编写简单的echo服务器。分享给大家供大家参考,具体如下:
server.php代码如下:
<?php class EchoServer { protected $serv = null; public function __construct() { $this->serv = new swoole_server(\'0.0.0.0\', 8888); //配置参数 $this->serv->set(array( \'worker_num\' => 4, \'daemonize\' => 0, )); //注册回调函数 $this->serv->on(\'start\', array($this, \'start\')); $this->serv->on(\'connect\', array($this, \'connect\')); $this->serv->on(\'receive\', array($this, \'receive\')); $this->serv->on(\'close\', array($this, \'close\')); //启动服务 $this->serv->start(); } public function start($serv) { echo \"start \\n\"; } //有客户端连接时 public function connect($serv, $fd) { echo \"connect \\n\"; $serv->send($fd, \"hello \\n\"); } public function close($serv, $fd) { echo \"close \\n\"; } public function receive($serv, $fd, $from_id, $data) { echo \"get message {$fd} : {$data} \\n\"; //向客户端发送信息 $serv->send($fd, $data . \"\\n\"); } } $serv = new EchoServer();
client.php代码如下:
<?php class EchoClient { protected $client = null; public function __construct() { //注意这里需设置为异步,不然下面无法设置事件回调函数 $this->client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); $this->client->on(\'connect\', array($this, \'connect\')); $this->client->on(\'receive\', array($this, \'receive\')); $this->client->on(\'close\', array($this, \'close\')); $this->client->on(\'error\', array($this, \'error\')); //连接服务端 $this->client->connect(\'0.0.0.0\', 8888); } public function connect($client) { echo \"connect \\n\"; } public function receive($client, $data) { echo \"server send: {$data}\"; //向标准输出写入数据 fwrite(STDOUT, \"请输入消息:\"); //获取标准输入数据 $msg = trim(fgets(STDIN)); //向服务端发送数据 $client->send($msg); } public function close($client) { echo \"close \\n\"; } public function error($client) { echo \"error \\n\"; } } $cli = new EchoClient();
然后分别运行这两个脚本
> /data/php56/bin/php server.php > /data/php56/bin/php client.php
运行结果如下:
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP网络编程技巧总结》、《php socket用法总结》、《php面向对象程序设计入门教程》、《PHP数据结构与算法教程》及《php程序设计算法总结》
希望本文所述对大家PHP程序设计有所帮助。