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基础教程

swoole 入门的更多相关文章

  1. Swoole 入门学习(二)

    Swoole 入门学习 swoole 之 定时器 循环触发:swoole_timer_tick    (和js的setintval类似) 参数1:int $after_time_ms 指定时间[毫秒] ...

  2. Swoole入门到实战 打造高性能 赛事直播平台(完整版)

    Thinkphp+Swoole入门到实战打造高性能赛事直播平台 第1章 课程介绍 欢迎大家来到swoole的课程!本章主要是介绍了swoole的一些特性,以及使用场景,并且分享了swoole在其他公司 ...

  3. swoole入门到实战打造高性能赛事直播平台☆

    ​ 第1章 课程介绍 本章主要是介绍了swoole的一些特性,以及使用场景,并且分享了swoole在其他公司的一些案例,最后重点讲解了swoole学习的一些准备工作. 第2章 PHP 7 源码安装 本 ...

  4. swoole入门abc

    1. 入门abc 1.1 github账号添加 第一步依然是配置git用户名和邮箱 git config user.name "用户名" git config user.email ...

  5. 韩天峰力荐 Swoole入门到实战打造高性能赛事直播平台

    第1章 课程介绍欢迎大家来到swoole的课程!本章主要是介绍了swoole的一些特性,以及使用场景,并且分享了swoole在其他公司的一些案例,最后重点讲解了swoole学习的一些准备工作.1-1 ...

  6. [Swoole入门到进阶] [精选公开课] Swoole服务器-Server的四层生命周期

    PHP 完整生命周期 执行PHP文件 PHP扩展模块初始化(MINIT) PHP扩展请求初始化(RINIT) 执行 PHP 逻辑 PHP扩展请求结束(RSHUTDOWN) PHP脚本清理 PHP扩展模 ...

  7. mac php Swoole入门

    一. swoole 扩展安装 安装前必须保证系统已经安装了下列软件 php-7.0 或更高版本 gcc-4.8 或更高版本 make autoconf pcre (CentOS系统可以执行命令:yum ...

  8. swoole入门简介

    原文:https://www.cnblogs.com/dormscript/p/4811921.html 本文主要记录一下学习swoole的过程.填过的坑以及swoole究竟有多么强大! 首先说一下对 ...

  9. Swoole入门到实战打造高性能赛事直播平台(完整版)

    需要 的联系我,QQ:1844912514

随机推荐

  1. 二、nginx搭建图片服务器

    接上篇:Nginx安装手册 cd /usr/local/nginx/conf/ 配置图片服务器 方法一.在配置文件server{}中location /{} 修改配置: #默认请求 location ...

  2. 汇编指令-MRS(读)和MSR(写)指令操作CPSR寄存器和SPSR寄存器使用(1)

    1.MSR和MRS指令介绍 MRS 指令:  对状态寄存器CPSR和SPSR进行读操作.通过读CPSR可以获得当前处理器的工作状态.读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有 ...

  3. IOS学习[Swift中跳转与传值]

    Swift中页面跳转与传值: 1.简单方式 首先,Swift的跳转可分为利用xib文件跳转与storyboard跳转两种方法,我这里选择使用storyboard的界面跳转方法. 1.通过在storyb ...

  4. PyCharm:2017.3版即将新增科学计算模式,预览版现在可以下载使用

    编译:Lemon,原文作者:Ernst Haagsman 公众号:Python数据之道(ID:PyDataRoad) pycharm:2017.3版即将新增科学计算模式 在JetBrains将发布的新 ...

  5. 原生的AJAX

    var XHR=null; if (window.XMLHttpRequest) { // 非IE内核 XHR = new XMLHttpRequest(); } else if (window.Ac ...

  6. 定宽块状元素居中 1记(text-align/margin:0 auto)

    对于text-align:center的用法只是针对文本相对于父元素的居中,例如: #jz2{ width:300px; margin: 10px auto; border:2px solid red ...

  7. my new start

    my new start in blog csdn : today i formally migrate my personal technical blog from sina to here in ...

  8. 结对编程1.四则运算GUI版

    201421123022 王若凡        201421123026  欧阳勇 coding详细代码 a.需求分析: 这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linu ...

  9. 201521123052《Java程序设计》第7周学习总结

    1. 本周学习总结 参考资料: XMind 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 public boolean contains(Ob ...

  10. 201521123013 《Java程序设计》第5周学习总结

    1. 本章学习总结 1.1 尝试使用思维导图总结有关多态和接口的知识点. 1.2可选 使用常规方法总结其他上课内容. 接口:不是类,不能使用new实例化,可用instanceof判断是否实现某接口.接 ...