服务器环境  centos7.0  swoole4.3 php7.2 pcre4.8  nginx1.8   php-fpm

server.php

<?php 

class Server
{
private $serv; public function __construct() { $this->serv = new swoole_server("0.0.0.0", 9501); $this->serv->set(array(
'worker_num' => 8,
'daemonize' => false,
'max_request' => 10000,
'dispatch_mode' => 2,
'debug_mode'=> 1
)); $this->serv->on('Start', array($this, 'onStart'));
$this->serv->on('Connect', array($this, 'onConnect'));
//$this->serv->on('Message', array($this, 'onMessage'));
$this->serv->on('Receive', array($this, 'onReceive'));
$this->serv->on('Close', array($this, 'onClose')); $this->serv->start();
} public function onStart( $serv ) {
echo "Start\n";
} public function onConnect( $serv, $fd, $from_id ) {
$serv->send( $fd, "收到 {$fd}!" );
} // public function onMessage( $serv, $fd, $from_id ) {
// $serv->send( $fd, "Hello {$fd}!我已经收到你的信息" );
// } public function onReceive( $serv, $fd, $from_id, $data ) {
echo "Get Message From Client {$fd}:{$data}\n"; $serv->send( $fd, "Hello {$fd}!我收到了你的信息!{$data}" ); } public function onClose( $serv, $fd, $from_id ) {
echo "Client {$fd} close connection\n";
}
}
// 启动服务器
$server = new Server(); ?>

client.php  异步 非阻塞

<?php

$client = new swoole_client(SWOOLE_TCP | SWOOLE_ASYNC); //异步非阻塞

$client->on("connect", function($cli) {
$cli->send("hello world\n");
}); $client->on("receive", function($cli, $data) { echo "received: $data\n";
//sleep(1);
fwrite(STDOUT, "请输入消息:"); $msg = trim(fgets(STDIN)); $cli->send( $msg );
}); $client->on("close", function($cli){
echo "closed\n";
}); $client->on("error", function($cli){
exit("error\n");
}); $client->connect('0.0.0.0', 9501, 0.5); ?>

测试 结果

      

swoole 异步非堵塞 server/端 client/端 代码,已经测试完毕。贴代码的更多相关文章

  1. swoole学习(二)----搭建server和client

    1.搭建server 1.1搭建server.php 1.搭建websocket服务器,首先建立 server.php 文件, <?php $server = new swoole_websoc ...

  2. linux 下同步异步,堵塞非堵塞的一些想法

    补充: 发现一个更好的解释样例:同步是一件事我们从头到尾尾随着完毕.异步是别人完毕我们仅仅看结果. 堵塞是完毕一件事的过程中可能会遇到一些情况让我们等待(挂起).非堵塞就是发生这些情况时我们跨过. 比 ...

  3. Python web框架 Tornado(二)异步非阻塞

    异步非阻塞 阻塞式:(适用于所有框架,Django,Flask,Tornado,Bottle) 一个请求到来未处理完成,后续一直等待 解决方案:多线程,多进程 异步非阻塞(存在IO请求): Torna ...

  4. Puppet部署:安装puppet server、client

    Puppet部署:安装puppet server.client   puppet与其他手工操作工具有一个最大的区别就是 puppet的配置具有稳定性,因此你可以多次执行puppet,一旦你更新了你的配 ...

  5. Python web框架 Tornado异步非阻塞

    Python web框架 Tornado异步非阻塞   异步非阻塞 阻塞式:(适用于所有框架,Django,Flask,Tornado,Bottle) 一个请求到来未处理完成,后续一直等待 解决方案: ...

  6. 200行自定义异步非阻塞Web框架

    Python的Web框架中Tornado以异步非阻塞而闻名.本篇将使用200行代码完成一个微型异步非阻塞Web框架:Snow. 一.源码 本文基于非阻塞的Socket以及IO多路复用从而实现异步非阻塞 ...

  7. 03: 自定义异步非阻塞tornado框架

    目录:Tornado其他篇 01: tornado基础篇 02: tornado进阶篇 03: 自定义异步非阻塞tornado框架 04: 打开tornado源码剖析处理过程 目录: 1.1 源码 1 ...

  8. Tornado----自定义异步非阻塞Web框架:Snow

    Python的Web框架中Tornado以异步非阻塞而闻名.本篇将使用200行代码完成一个微型异步非阻塞Web框架:Snow. 一.源码 本文基于非阻塞的Socket以及IO多路复用从而实现异步非阻塞 ...

  9. php的异步非阻塞swoole模块使用(一)实现简易tcp服务器--服务端

    绑定tcp服务器的地址 $swserver = new swoole_server("127.0.0.1",9501); 设置tcp服务器装机容量(太危言耸听了-其实就是设置属性) ...

随机推荐

  1. python调用存储过程失败返回1787错误

    (1787, 'When @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1, the statements CREATE TEMPORARY TABLE and DROP T ...

  2. Select(快速选择顺序统计量)原理及C++代码实现

    SELECT算法利用快排中的partition思想来进行无序数组的快速选择. 寻找第i个顺序统计量可以简单理解为寻找第i小的元素. 该算法通过为partition选择一个好的主元,来保证Partiti ...

  3. android版本更新框架、新闻客户端、音乐播放器、自定义View、Github客户端、指南针等源码

    Android精选源码 XUpdate 一个轻量级.高可用性的Android版本更新框架 Android一个可定制的圆形进度条 Android自定义View分享 打钩动画源码 android音乐文件播 ...

  4. u盘出现大文件无法复制的解决

    如果u盘出现大文件无法复制的情况,修改U盘的文件系统格式: 把U盘格式化为NTFS格式.  FAT32的都不能放4G+的文件;右键格式化里如果没有NTFS,就在开始运行里输入cmd 然后输入" ...

  5. linux上hosts文件如何配置

    linux上hosts文件如何配置 一.什么是host Hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登 ...

  6. 吴裕雄--天生自然python学习笔记:Python3 正则表达式

    Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参 ...

  7. 几个简单又实用的PHP函数

    简单方便使用: /** * 将多维数组转为一维数组 * @param array $arr * @return array */ function ArrMd2Ud($arr) { #将数值第一元素作 ...

  8. 配置Maven本地仓库

    以本机为例: 系统:Windows 开发工具:IDEA 如果想在dos窗口输mvn命令,需配置环境变量. 1. 在D盘新建repository文件夹,该目录用作maven的本地库. 2. 打开D:\P ...

  9. Selenium2自动化——初体验

    一.Windows下的环境搭建 1.安装Python 访问Python官网:https://www.python.org/ 2.安装setuptools与pip setuptools是Python e ...

  10. Proto3:风格

    本文介绍.proto文件的编码风格.遵循下面的惯例,可以使你的protocol buffer消息定义和它们对应的类连贯且已读. 注意,protocol buffer风格随时间变化一直在进步,所以可能你 ...