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. JAVA实用案例之图片水印开发

    写在最前面 上周零零碎碎花了一周的时间研究水印的开发,现在终于写了个入门级的Demo,做下笔记同时分享出来供大家参考. Demo是在我上次写的 JAVA实用案例之文件导入导出(POI方式) 框架基础上 ...

  2. chrome开发工具指南(二)

    Application 面板 使用 App Manifest 窗格检查您的网络应用清单和触发 Add to Homescreen 事件. 使用 Service Worker 窗格执行与服务工作线程相关 ...

  3. Spring五个事务隔离级别和七个事务传播行为

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt216 Spring五个事务隔离级别和七个事务传播行为 1. 脏读 :脏读就是 ...

  4. Ubuntu linux安装putty

    Step1 安装Putty $ sudo apt-get install putty Step2 使用Putty Client 查找已经安装完的putty客户端 设置Remote Server的IP地 ...

  5. Sqlite数据库添加数据以及查询数据方法

    只是两个添加查询方法而已,怕时间长不用忘了

  6. oop作业五 基本构架

    计算器的主体框架 链接 githu链接 031602510 面向对象的分类 分成四个类,分别有着自己的属性功能: 栈的学习 栈(stack)是一个"后进后出"的结构(已知)--从& ...

  7. 【Beta阶段】测试与发布

    [Beta阶段]测试报告 一.Bug记录 1. 已经修复的BUG:文件查重的小组的空指针处理了 . 2.未能修复的bug: (1).在进行查重的时候必要要有10个文件,不然会报错:        (2 ...

  8. 团队作业——Alpha冲刺之事后诸葛亮

    小组成员: 武健男:201421123091 林俊鹏:201421123076 何跃斌:201421123082 陈鑫龙:201421123078 潘益靖:201421123086 黄睿:201421 ...

  9. 201521123108 《Java程序设计》第6周学习总结

    本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 书面作业 2.1. clone方法 1.1 Object对象中的 ...

  10. 201521123007《Java程序设计》第2周学习总结

    1.本周学习总结 类名第一个字母大写,类名下的方法如main第一个字母要小写: Java有三种基本数据类型:整型(byte,short,int,long,char),浮点型(float,double) ...