zoukankan      html  css  js  c++  java
  • swoole 入门

    1. 概述

    Swoole是PHP的一个扩展,但是它与普通的扩展不同,普通的扩展知识提供一个库函数,而Swoole扩展在运行后会接管PHP的控制器,进入时间循环。当IO时间发生后,Swoole会自动回调指定的PHP函数
    Swoole解决了php的即时通信、异步任务、消息队列等方面的问题。Swoole的很多功能都需要CLI(Command Line INterface)的。所以学习Swoole需要一定的Linux/Unix环境编程基础。

    2. 安装Swoole

    环境要求: Linux/Unix操作系统。Linux内核2.3.32+,php5.3.10+,依赖gcc和cmake包。
    Swoole是PHP的标准扩展。所以可以使用phpize来生产PHP编译配置,./configure来做编译配置检测,make来编译,make install来安装。而且Swoole已经收录到PHP官方扩展库,还可以通过pecl install swoole 来安装

    • 安装
    yum install gcc make autoconf pcre-deve # 安装依赖包
    wget http://pecl.php.net/get/swoole-1.9.6.tgz
    tar zxvf swoole-1.9.6.tgz
    cd swoole-1.9.6
    where phpize  # 查phpize位置
    /usr/local/opt/php56/bin/phpize 
    ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
    make
    sudo make install
    • php.ini配置
      增加以下内容
    extension                          = swoole.so
    swoole.aio_thread_num              = 2;        # 设置AIO异步文件的线程数量
    swoole.display_errors              = On ;  ## 关闭/开启Swoole错误信息,开发的时候就开启吧    
    swoole.unixsock_buffer_size        = ;      # 设置进程间通信的UnixSocket缓存区尺寸
    swoole.use_namespace                = On;      # 使用命名空间类风格。默认为关闭。(需要1.8.1+版本)
    • 查看安装效果
    php-fpm restart;
    php -ri swoole | grep Version ; # -ri 显示php的扩展信息
    php -m | grep swool 

    3. 开始Swoole之旅

    • 先构建一个Server
    vim abc.php 
    <?php
    /**
    * 启动一个swoole服务,监听9501端口
    */
    $serv = new swool_server('127.0.0.1',9501);
    $serv->set(['worker_num'=>2]); // 设置进程数(cpu核数的1-4倍)
    
    /**
    * swoole_server是事件驱动。
    * 链接事件
    * $fd 唯一标识。用于去吧不同的客户端
    */
    $serv->on('Connect', function ($serv,$fd) {
        echo "new client connected.".PHP_EOL;
    });
    
    /**
    * 接受事件
    * $fromId reactor线程id
    * $data 接收到的数据(字符串或者二进制内容)
    */
    $serv->on('Receive', function ($serv, $fd,$fromId,$data) {
        $serv->send($fd,'Server '.$data);
    });
    
    /**
    * 关闭链接事件
    */
    $serv->on('Close',function($serv,$fd) {
        echo "Cleint close.".PHP_EOL;
    });
    
    $serv->start();
    • 通过telnet模拟Client访问这个Server

      在访问之前在命令行输入 php abc.php 来启动服务。
      可以通过 netstat -anp | grep 9501 来查看服务是否起来

    yum install telnet
    telnet 127.0.0.1 9501
    send ayt

    4. 常用php命令

    • php -i # 打印php.ini
    • php --ini # 打印关于php.ini的信息
    • php -m # 查看php加在哪些扩展
    • php -l # 检测文件是否有语法错误(php -l test.php)
    • php -r # 直接运行php代码(php -r 'echo "hi";')

    参考资料

    1. Swoole官方文档
    2. 白狼大哥的Swoole基础教程
  • 相关阅读:
    Linux ansible 常用模块二
    Linux之ansible 常用模块
    flask websocket实现用例
    flask--上下文原理
    python Django
    python 并发编程 锁 / 信号量 / 事件 / 队列(进程间通信(IPC)) /生产者消费者模式
    并发编程 process 模块的方法及运用 僵尸与孤儿
    python 并发编程 操作系统 进程 并发.并行 及 同步/异步,阻塞/非阻塞
    python 网络编程粘包解决方案2 + ftp上传 + socketserver
    第一节 机器学习基础
  • 原文地址:https://www.cnblogs.com/gelu/p/f7601ac81e903e6207e19f24cf5b5f04.html
Copyright © 2011-2022 走看看