EasySwoole学习笔记一

 easySwoole   admin   阅读(527)   2019-04-05 10:56:05 

EasySwoole是一款基于Swoole Server开发的常驻内存型的分布式PHP框架,专为API而生,摆脱传统PHP 运行模式在进程唤起文件的加载的性能损失。可以编写多进程,可异步,高可用的应用服务. PHP运行模式

Cgi:Web服务器接收请求->fork子进程 调用程序/执行程序->程序返回内容/程序调用结束->web服务器接收内容->返回给用户 由于每次用户请求,都得fork创建进程调用一次程序,然后销毁进程,所以性能较低;
Fast-cgi:web服务器fast-cgi进程管理器初始化->预先fork n个进程
用户请求->web服务器接收请求->交给fast-cgi进程管理器->fast-cgi进程管理区接收,给其中一个空闲fast-cgi进程处理->处理完成,fast-cgi进程变为空闲状态,等待下次请求->web服务器接收内容->返回给用户;
Php-cli:没有超时时间,默认关闭buffer缓冲,STDIN,STDOUT输入输出的使用;
网络协议
应用层,表示层,会话层,传输层,网络层,数据链路层,物理层;
PHP新特性
Function a():int{
Return 1; //返回int类型,否则报错
}
Echo 1<=>1; 返回0 echo 1<=>2 -1; echo 2<=>1;

PHP回调/闭包
Function insert(int $i):bool{
echo “insert error {$i} \n”;
}
$arr = range(0,1000);
Function action(array $arr,callable $function )
{
Foreach($arr as $value){
If($value %10==0){
Call_user_func($function,$value);
}
}
}
Action($arr,’insert’);

PHP多进程
多进程开启方法,Swoole,pcntl扩展开启;
进程通信:在各个进程内存空间不一致,各个变量都是不同的内存空间;
多进程的通信:管道通信分为有名管道,无名管道,消息队列通信,共享内存通信,套接字通信。第三方通信,文件,redis,mysql通信;
进程信号:操作系统通过进程系统中发生了某种规定了某种预先规定的事件,一个键盘一个错误(进程尝试访问它的虚拟内存中不存在的位置),都可能产生一个信号;
僵尸进程:僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程。释放子进程占用的资源,而子进程成为一个僵尸进程;
孤儿进程:指的是父进程执行完成或被终止了继续运行的一类进程,孤儿进程被init进程(进程号1)所收养,并由init进程对他们完成状态收集工作;
守护进程:是一类运行在后台运行的特殊进程,用于执行特定的系统任务,很多守护进程在系统启动,并且一直运行直到系统关闭;系统守护进程(syslogd,login,crond,at)等,网络守护进程(sendmail,httpd),独立启动的守护进程httpd,named.被动守护进程(telnet);

异步/同步
同步主要调用某个逻辑时,会等待该逻辑返回的调用结果;
异步:异步代码主要指调用某个逻辑时,不会等待该逻辑返回的结果,只会返回的最初结果;
阻塞/非阻塞
阻塞:正在运行的进程由于提出系统服务请求(I/O操作)某中原因未得到操作系统的立刻响应,
或者其他合作进程获得的数据尚未到达等原因;
Php的堵塞:几乎所有的阻塞都是与I/0有关;
非阻塞:值在进程运行中,不存在阻塞的情况,一直往下执行;

协程
协程不是进程或者线程,其执行的过程更类似于子进程,或者补带返回值函数调用
一个程序可以包含多个协程,可以对比一个进程包含多个进程,因而比较协程和线程。我们知道多个线程相对独立有自已上下文切换收系统控制;而协程相对独立,有自已上下文由当前的协程切换到其他协程由当前协程控制;





Initalize框架初始化事件,mainServerCreate主服务创建事件,onRequest Http请求事件,afterRequest Http响应后事件

intialize:已完成的工作,注册,数据库,redis,连接池。Trace链追踪器注册,引入用来自定义目录;
mainServerCreate:创建服务;

OnRequest:收到请求事件,HTTP进行拦截;

AfterRequest:请求方法结束后执行,可再此事件中做trace请求的追踪监视,以及响应内存;








我要评论



展示评论