• 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基础教程
  • 相关阅读:
    四、系统开发和运行知识(二)
    9.Parameters
    7.Constants and Fields
    四、系统开发和运行知识(一)
    三、操作系统知识(3)
    6.Type and Member Basics
    三、操作系统知识(2)
    5.Primitive, Reference, and Value Types
    4、Type fundamentals
    三、操作系统知识(1)
  • 原文地址:https://www.cnblogs.com/gelu/p/f7601ac81e903e6207e19f24cf5b5f04.html
Copyright © 2020-2023  润新知