swoole学习】的更多相关文章

1.搭建server 1.1搭建server.php 1.搭建websocket服务器,首先建立 server.php 文件, <?php $server = new swoole_websocket_server('0.0.0.0', 9502);// 创建swoole的websocket实例 其中 0.0.0.0 代表监听所有回路 包括127.0.0.1 和 192.168.*.* 和 外部IP, 端口是9502 //监听打开事件 $server->on('open', function…
1.下载swoole 登录swoole官网 https://www.swoole.com/ 点击下载,找到github或者其他链接下载下来 放到虚拟机上. 也可以使用虚拟机下载 2.登录虚拟机 推荐使用vagrantbox 和vagrant搭建虚拟机 lnmp环境:php7.1+nginx1.9+ununtu14.04 2.1 解压并安装 1.进入下载目录:使用 tar -zxvf filename 解压文件;得到文件夹 2.CD 到文件夹中,执行 phpize,如果没有安装,请安装 dev;如…
环境:Centos6.4,PHP环境:PHP7 <?php //创建TCP服务器 /** * $host 是swoole需要监听的ip,如果要监听本地,不对外服务,那么就是127.0.0.1;如果我要监听外网,比如我本地是192.168.9.155,我可以监听这个IP,如果本机分配的192.168.9.155的IP,外网在访问IP的时候,就可以相应对应的TCP服务.当然也可以同时监听多个IP */ /** * $port端口号.如果选择1024以下的端口号,需要root权限,如果swoole和p…
环境:Centos6.4,PHP环境:PHP7 服务端代码 <?php //创建websocket服务器 $host = '0.0.0.0'; $port = ; $ws = new swoole_websocket_server($host, $port); // $ws->on('open', function($ws, $request){ //$ws就是我们的服务器,$request就是客户端的信息 var_dump($request); $ws->push($request-&…
环境:Centos6.4,PHP环境:PHP7 <?php //创建UCP服务器(UDP服务器相对于TCP服务器通信更可靠些) /** * $host 是swoole需要监听的ip,如果要监听本地,不对外服务,那么就是127.0.0.1;如果我要监听外网,比如我本地是192.168.9.155,我可以监听这个IP,如果本机分配的192.168.9.155的IP,外网在访问IP的时候,就可以相应对应的TCP服务.当然也可以同时监听多个IP */ /** * $port端口号.如果选择1024以下的…
环境:Centos6.4,PHP环境:PHP7 <?php //创建TCP服务器 /** * $host 是swoole需要监听的ip,如果要监听本地,不对外服务,那么就是127.0.0.1;如果我要监听外网,比如我本地是192.168.9.155,我可以监听这个IP,如果本机分配的192.168.9.155的IP,外网在访问IP的时候,就可以相应对应的TCP服务.当然也可以同时监听多个IP */ /** * $port端口号.如果选择1024以下的端口号,需要root权限,如果swoole和p…
Swoole是面向生产环境的 PHP 异步网络通信引擎,官网:https://www.swoole.com/ 使 PHP 开发人员可以编写高性能的异步并发 TCP.UDP.Unix Socket.HTTP,WebSocket 服务.Swoole 可以广泛应用于互联网.移动通信.企业软件.云计算.网络游戏.物联网(IOT).车联网.智能家居等领域. 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品. Swoole 使用纯 C 语言编…
<?php ini_set('default_socket_timeout', -1); class serverEmail { public $serv = null; public function __construct() { $this->serv = new swoole_server('0.0.0.0', 9508, SWOOLE_BASE); $this->serv->set([ 'worker_num' => 1, 'task_worker_num' =&g…
1.安装swoole扩展 2.网络调试助手进行调试 <?php //创建服务器 $host='192.168.10.31'; $port=; //$model='SWOOLE_PROCESS'; //$sock_type='SWOOLE_SOCKET_TCP'; //$serv=new swoole_server($host,$port,$model,$sock_type); $serv=new swoole_server($host,$port); /* * $host:127.0.0.1 本…
使用swoole+thinkphp6.0+redis 结合开发的登录模块,做完之后有几点感悟: 1.不要相信任务数据,包括请求的外部接口,特别是超时者部分,尽可能的交给task完成. 2.原来可以在入口文件哪里使用超全局变量声明已经实例化的server服务对象,然后就其他文件使用了. 3.异步任务(协程)里面不能再异步(开启协程任务),只能是同步(task任务下,redis只能使用同步的模式,使用异步的模式会出错!). 4.在使用task任务下,不能使用thinkphp6.0里面的门面(Faca…
一.服务端 0. swoole常用的配置项: daemonize = true 守护进程化 worker_num #swoole配置参数 设置启动的Worker进程数: 如 1 个请求耗时 100ms,要提供 1000QPS 的处理能力,那必须配置 100 个进程或更多. reactor_num #线程数 task_worker_num #配置 Task 进程的数量1. 几个重要的id: $server->master_pid #主进程的 PID 跟pid_file文件存放的PID.netsta…
环境:Centos6.4,PHP环境:PHP7,Swoole2.1(在指定的时间后执行函数,需要1.7.7或更高版本) <?php //---------------------------------------------------swoole_timer_tick--------------------------------------------------// //设置一个间隔时钟定时器,与after定时器不同的是tick定时器会持续触发,直到调用swoole_timer_clea…
环境:Centos6.4,PHP环境:PHP7 <?php //创建WEB服务器 $host = '0.0.0.0'; $port = ; $server = new swoole_http_server($host, $port); //获取请求 /** * $request:请求信息,get或者post的信息 * $response:返回信息 */ $server->on('request', function($request, $response){ var_dump($request…
<?php //创建异步tcp客户端 $client=new swoole_client(SWOOLE_SOCK_TCP,SWOOLE_SOCK_ASYNC); //注册连接成功的回调函数 $client->on('connect',function($cli){ $cli->send("hello \n"); }); //注册数据接收 $cli:服务端信息 $data:数据 $client->on('receive',function($cli,$data){…
<?php //创建tcp客户端 $client=new swoole_client(SWOOLE_SOCK_TCP); //连接服务器 $client->connect(,) or die("连接失败"); //向服务器发送数据 $client->send("hello world123") or die("数据发送失败"); //从服务器接收数据 $data=$client->recv(); if(!empty($da…
<?php //创建tcp服务器 $host='0.0.0.0'; $port=; $serv=new swoole_server($host,$port); //设置异步进程工作数 $serv->)); //投递异步任务 $serv->on('receive',function($serv,$fd,$from_id,$data){ $task_id=$serv->task($data); echo "异步ID:$task_id\n"; }); //处理异步任务…
<?php //循环执行的定时器 swoole_timer_tick(,function($timer_id){ echo "执行 $timer_id \n"; }); swoole_timer_after(,function(){ echo "3000后执行 \n"; }); //php index.php //ps -ajft //service iptables stop //关闭防火墙 ?>…
<?php //创建webSocket服务器 $serv=); //获取请求 //on //open 建立连接 $serv:服务器 $request:客户端信息 $serv->on('open',function($serv,$request){ var_dump($request); $serv->push($request->fd,"welcome \n"); }); //message 接收信息 $serv->on('message',functio…
<?php //创建web服务器 $serv=); //获取请求 /* * $request:请求信息 * $response:响应信息 */ $serv->on('request',function($request,$response){ var_dump($request); //设置返回的头信息 $response->header("Content-Type","text/html;charset=utf-8"); //发送信息 $resp…
<?php //创建服务器 $serv=,SWOOLE_PROCESS,SWOOLE_SOCK_UDP); //bool $swoole_server->on(string $event,$mixed $callback); /* * $serv:服务器信息 * $data:接收到的数据 * $fd:客户端信息 */ //监听数据接收的事件 $serv->on('packet',function($serv,$data,$fd){ //发送数据到相应客户端,反馈信息 $serv->…
<?php //创建webSocket服务器 $ws=); //open $ws->on('open',function($ws,$request){ echo "新用户 $request->fd 加入 \n"; //设置用户ID $GLOBALS['fd'][$request->fd]['id']=$request->fd; //设置用户名 $GLOBALS['fd'][$request->fd]['name']='匿名用户'; }); //mes…
<?php //异步mysql操作 $db=new swoole_mysql(); $config=[ 'host'=>'192.168.10.31', 'user'=>'zouke', 'password'=>'zouke369189', 'database'=>'pro', 'charset'=>'utf8' ]; //连接数据库 $db->connect($config,function($db,$r){ if($r===false){ var_dump($…
<?php //异步事件 $fp=stream_socket_client(); fwrite($fp,"GET / HTTP/1.1\r\nHost:www.qq.com\r\n\r\n"); //添加异步事件 swoole_event_add($fp,function($fp){ $resp=fread($fp,); var_dump($resp); swoole_event_del($fp); fclose($fp); }); echo "这个先执行完成\n&qu…
<?php //异步写入文件 $content="hello world"; swoole_async_writefile('2.txt',$content,function($filename){ echo $filename; },); ?>…
<?php //异步读取文件 swoole_async_readfile(__DIR__."/1.txt",function($filename,$content){ echo "$filename $content"; }); ?>…
<?php //进程数组 $workers=[]; //创建进程的数据量 $worker_num=; //创建启动进程 ;$i<$worker_num;$i++){ //创建单独新进程 $process=new swoole_process("doProcess"); //启动进程并获取进程id $pid=$process->start(); //存入进程数组 $workers[$pid]=$process; } //创建进程对应的执行函数 function doPr…
<?php //执行DNS查询 swoole_async_dns_lookup("www.baidu.com",function($host,$ip){ echo $ip; }); ?>…
<?php //创建锁对象 $lock=new swoole_lock(SWOOLE_MUTEX);//互斥锁 echo "创建互斥锁\n"; //开始锁定 主进程 $lock->lock(); ){ sleep(); //解锁 $lock->unlock(); }else{ echo "子进程 等到锁\n"; //上锁 $lock->lock(); echo "子进程 获取锁\n"; //释放锁 $lock->un…
<?php //触发函数--异步执行 swoole_process::signal(SIGALRM,function(){ ; echo "$i \n"; $i++; ){ //清除定时器 swoole_process::alarm(-); } }); //定时信号 swoole_process::alarm(*); ?>…
<?php //进程仓库 $workers=[]; //最大进程数 $worker_num=; //批量创建进程 ;$i<$worker_num;$i++){ //创建子进程 $process=new swoole_process("doProcess",false,false); //开启队列--类似于全局函数 $process->useQueue(); //启动进程并获取进程id $pid=$process->start(); //存入进程数组 $worke…