• swoole在线聊天学习笔记


    <?php
    $http=new swoole_http_server('0.0.0.0',9501);
    
    $http->on('request',function(swoole_http_request $request,swoole_http_response $response){
        print_r($request);
    });
    
    $http->start();

    http://192.168.10.31:9501/swoole/chat/chat/http_server.php

     

    <?php
    $http=new swoole_http_server('0.0.0.0',9501);
    
    $http->on('request',function(swoole_http_request $request,swoole_http_response $response){
        //print_r($request);
        $response->end("hello world");
    });
    
    $http->start();

    <?php
    $http=new swoole_http_server('0.0.0.0',9501);
    
    $http->on('request',function(swoole_http_request $request,swoole_http_response $response){
        //print_r($request);
        //$response->end("hello world");
        $response->status(404);
        $response->end('404 not found');
    });
    
    $http->start();

    <?php
    $http=new swoole_http_server('0.0.0.0',9501);
    
    $http->on('request',function(swoole_http_request $request,swoole_http_response $response){
        //print_r($request);
        //$response->end("hello world");
        //$response->status(404);
        //$response->end('404 not found');
        $pathinfo=$request->server['path_info'];
    $in=strrpos($pathinfo,'/');
        $filename=substr($pathinfo,$in);
    $filename
    =__DIR__.$pathinfo;
    if
    (is_file($filename)){ $content=file_get_contents($filename); $response->end($content); }else{ $response->status(404); $response->end('404 not found'); } }); $http->start();

    <?php
    $http=new swoole_http_server('0.0.0.0',9501);
    
    $http->on('request',function(swoole_http_request $request,swoole_http_response $response){
        //print_r($request);
        //$response->end("hello world");
        //$response->status(404);
        //$response->end('404 not found');
        $pathinfo=$request->server['path_info'];
        $in=strrpos($pathinfo,'/');
        $filename=substr($pathinfo,$in);
        $filename=__DIR__.$filename;
        if(is_file($filename)){
             $ext=pathinfo($request->server['path_info'],PATHINFO_EXTENSION);
            //动态请求处理
            if($ext=='php'){
                ob_start();
                include_once $filename;
                $content=ob_get_contents();
                ob_end_clean();
                $response->end($content);
            }else{ //静态请求处理
                $content=file_get_contents($filename);
                $response->end($content);
            }        
        }else{
            $response->status(404);
            $response->end('404 not found');
        }
    });
    
    $http->start();

    运行在nginx服务器

    运行在swoole--http_server服务器

    <?php
    $http=new swoole_http_server('0.0.0.0',9501);
    
    $http->set([
        'worker_num'=>16,
        'daemonize'=>1
    ]);
    
    $http->on('request',function(swoole_http_request $request,swoole_http_response $response){
        //print_r($request);
        //$response->end("hello world");
        //$response->status(404);
        //$response->end('404 not found');
        $pathinfo=$request->server['path_info'];
        $in=strrpos($pathinfo,'/');
        $filename=substr($pathinfo,$in);
        $filename=__DIR__.$filename;
        if(is_file($filename)){
            $ext=pathinfo($request->server['path_info'],PATHINFO_EXTENSION);
            //动态请求处理
            if($ext=='php'){
                ob_start();
                include_once $filename;
                $content=ob_get_contents();
                ob_end_clean();
                $response->end($content);
            }else{ //静态请求处理
                $content=file_get_contents($filename);
                $response->end($content);
            }        
        }else{
            $response->status(404);
            $response->end('404 not found');
        }
    });
    
    $http->start();

    设置完成后(daemonize=1时),http_server服务器转入后台作为守护进程运行

    <?php
    $http=new swoole_http_server('0.0.0.0',9501);
    
    $http->set([
        'worker_num'=>16,
        'daemonize'=>1
    ]);
    
    $http->on('request',function(swoole_http_request $request,swoole_http_response $response){
        //print_r($request);
        //$response->end("hello world");
        //$response->status(404);
        //$response->end('404 not found');
        $pathinfo=$request->server['path_info'];
        $in=strrpos($pathinfo,'/');
        $filename=substr($pathinfo,$in);
        $filename=__DIR__.$filename;
        if(is_file($filename)){
            $ext=pathinfo($request->server['path_info'],PATHINFO_EXTENSION);
            //动态请求处理
            if($ext=='php'){
                ob_start();
                include_once $filename;
                $content=ob_get_contents();
                ob_end_clean();
                $response->end($content);
            }else{ //静态请求处理
                $mimes=include('mimes.php');
                $response->header("Content-type",$mimes[$ext]);
                $content=file_get_contents($filename);
                $response->end($content);
            }        
        }else{
            $response->status(404);
            $response->end('404 not found');
        }
    });
    
    $http->start();

    ZPHP框架

    https://github.com/shenzhe/zphp

    执行脚手架生成项目

     将生成的项目文件全部复制到chat目录下  cp -rf chat_zphp/* chat//

    将zphp框架文件全部复制到chat目录下  cp -rf zphp/* chat//

    <?php
    use ZPHPPHP;
    
    $zphp=null;
    $mimes=null;
    
    $http=new swoole_http_server('0.0.0.0',9503);
    
    $http->set([
        'worker_num'=>16,
        'daemonize'=>0
    ]);
    
    $http->on('request',function(swoole_http_request $request,swoole_http_response $response){
        //print_r($request);
        //$response->end("hello world");
        //$response->status(404);
        //$response->end('404 not found');
        $pathinfo=$request->server['path_info'];
        $in=strrpos($pathinfo,'/');
        $filename=substr($pathinfo,$in);
        $filename=__DIR__.$filename;
        if(is_file($filename)){
            $ext=pathinfo($request->server['path_info'],PATHINFO_EXTENSION);
            //动态请求处理
            if($ext=='php'){
                /************************
                ob_start();
                include_once $filename;
                $content=ob_get_contents();
                ob_end_clean();
                $response->end($content);
                ************************/
                $response->status(404);
                $response->end('404 not found');
            }else{ //静态请求处理
                //$mimes=include('mimes.php');
                global $mimes;
                $response->header("Content-type",$mimes[$ext]);
                $content=file_get_contents($filename);
                $response->end($content);
            }        
        }else{
            //$response->status(404);
            //$response->end('404 not found');
            global $zphp;
            ob_start();
            $zphp->run();
            $result=ob_get_contents();
            ob_end_clean();
            $response->end($result);
        }
    });
    
    $http->on('workerStart',function($serv,$worker_id){
        //require zphp框架目录地址
        require __DIR__.DIRECTORY_SEPARATOR.'zphp'.DIRECTORY_SEPARATOR.'ZPHP'.DIRECTORY_SEPARATOR.'ZPHP.php';
        //home/wwwroot/default/swoole/www.zphp.com 是应用的地址
        $webPath=__DIR__;     //项目目录
        $configPath='default';//配置的目录的名称
        global $zphp;
        $zphp=ZPHP::run($webPath,false,$configPath);
        global $mimes;
        $mimes=require 'mimes.php';
    });
    $http->start();
    
    /************************************************************************
    master           //连接的处理(收发管理)  多线程(reactor,heartbeat)  epoll
       manager       //fork 管理worker进程
           worker    //worker进程 业务逻辑处理 
    ************************************************************************/

     代码热更新

    <?php
    use ZPHPPHP;
    
    $zphp=null;
    $mimes=null;
    
    $http=new swoole_http_server('0.0.0.0',9503);
    
    $http->set([
        'worker_num'=>16,
        'daemonize'=>0
    ]);
    
    $http->on('request',function(swoole_http_request $request,swoole_http_response $response){
        //print_r($request);
        //$response->end("hello world");
        //$response->status(404);
        //$response->end('404 not found');
        $pathinfo=$request->server['path_info'];
        $in=strrpos($pathinfo,'/');
        $filename=substr($pathinfo,$in);
        $filename=__DIR__.$filename;
        if(is_file($filename)){
            $ext=pathinfo($request->server['path_info'],PATHINFO_EXTENSION);
            //动态请求处理
            if($ext=='php'){
                /************************
                ob_start();
                include_once $filename;
                $content=ob_get_contents();
                ob_end_clean();
                $response->end($content);
                ************************/
                $response->status(404);
                $response->end('404 not found');
            }else{ //静态请求处理
                //$mimes=include('mimes.php');
                global $mimes;
                $response->header("Content-type",$mimes[$ext]);
                $content=file_get_contents($filename);
                $response->end($content);
            }        
        }else{
            //$response->status(404);
            //$response->end('404 not found');
            $_GET=$_POST=$_COOKIE=$_REQUEST=[];
            if(!empty($request->get)){
                $_GET=$request->get;
                $_REQUEST +=$_GET;
            }
            if(!empty($request->post)){
                $_POST=$request->post;
                $_REQUEST +=$_POST;
            }
            if(!empty($request->cookie)){
                $_COOKIE=$request->cookie;
            }
            global $zphp;
            ob_start();
            $zphp->run();
            $result=ob_get_contents();
            ob_end_clean();
            $response->end($result);
        }
    });
    
    $http->on('workerStart',function($serv,$worker_id){
        //require zphp框架目录地址
        require __DIR__.DIRECTORY_SEPARATOR.'zphp'.DIRECTORY_SEPARATOR.'ZPHP'.DIRECTORY_SEPARATOR.'ZPHP.php';
        //home/wwwroot/default/swoole/www.zphp.com 是应用的地址
        $webPath=__DIR__;     //项目目录
        $configPath='default';//配置的目录的名称
        global $zphp;
        $zphp=ZPHP::run($webPath,false,$configPath);
        global $mimes;
        $mimes=require 'mimes.php';
    });
    $http->start();
    
    /************************************************************************
    master           //连接的处理(收发管理)  多线程(reactor,heartbeat)  epoll
       manager       //fork 管理worker进程
           worker    //worker进程 业务逻辑处理 
    ************************************************************************/

    D:phpStudyWWWswoolechatappsctrlmainmain.php

     public function main()
        {
            $project = Config::getField('project', 'name', 'zphp');
            $data = $project." runing in swoole!
    ";
            $params = $_REQUEST;//Request::getParams();
            if(!empty($params)) {
                foreach($params as $key=>$val) {
                    $data.= "key:{$key}=>{$val}
    ";
                }
            }
            print_r($data);
            return $data;
        }

     

     

  • 相关阅读:
    golang 数组的一些自问自答
    这辈子研究 我的闪存
    我写的诗 爱你等于爱自己
    个人创业相关资料 创业与投资文章
    公司商业模式案例讲座 公司商业模式
    1、开篇:公司的价值 企业管理线细化系列文章
    visual studio 2022 企业版 下载
    芝奇DDR4 5066Hz 8Gx2内存闲置 个人闲置物品买卖
    INF: How SQL Server Compares Strings with Trailing Spaces
    虚拟 DOM 到底是什么?
  • 原文地址:https://www.cnblogs.com/zouke1220/p/8443939.html
Copyright © 2020-2023  润新知