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. c# 读取excel数据的两种方法(转)

    转载自:http://developer.51cto.com/art/201302/380622.htm, 方法一:OleDb: 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不 ...

  2. 详解 mpls vpn 的实现

    MPLS VPN的实现 一.实验目的 该实验通过MPLS VPN的数据配置,使学生掌握路由器相关接口的IP地址设置.路由协议的配置以及MPLS VPN的完整的创建过程, 从而加深对IP网络的IP编址. ...

  3. Js函数初学者练习(一)switch-case结构实现计算器。

      前  言 JRedu 给大家介绍一点JS函数的练习题希望初学者多做一些练习能够更好的掌握JS的函数,以及能够提升大家的逻辑思维.(我也是个渣渣希望路过的大神多提建议或意见) 希望能够对大家有所帮助 ...

  4. 结对实验---基于GUI的四则运算

    详细代码:https://git.coding.net/wangluo24/NO.2.git 结对伙伴:吕志哲(201421123021) &本人.许明涛 201421123024 一.题目要 ...

  5. Swing-setBounds()用法-入门

    先看API: public void setBounds(Rectangle r) 移动组件并调整其大小,使其符合新的有界矩形 r.由 r.x 和 r.y 指定组件的新位置,由 r.width 和 r ...

  6. 201521123039 《java程序设计》第八周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 总结: 1.集合可以动态修改大小,但是不可以存放基本数据类型: 2.java中任何对象都是is-a Objec ...

  7. 201521123054《Java程序设计》第1周学习总结

    #1. 本章学习总结 你对于本章知识的学习总结 本章我们学习了各种java相关文件的使用,能够进行基本的程序操作: 学会使用博客.码云与PTA管理java: #2. 书面作业 1.为什么java程序可 ...

  8. 201521123007《Java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...

  9. 201521123069 《Java程序设计》 第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 1.线程间的互斥访问(线程竞争):一些同时运行的线程需要访问共享数据,互斥访问是保证共享资源完整性的手段.实现方式 ...

  10. 201521123034《Java程序设计》第十一周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 多线程的冲突 互斥共享(有时两个或两个以上的线程需要同时对 而线程之间如果不加以控制,会产生一种情况-竞争) sy ...