Swoole涉及的知识点很是多,互为表里,每次想写都发现根本理不出一个头绪php
Swoole是一个php的扩展,它的核心目的就是解决php在实现server服务中可能遇到的一系列问题,这些问题用源生的php每每并不能很高效(执行效率)的解决,通常也不会使用php来解决,因此会有说swolle从新定义的php的说法。
毕竟php做为一门成熟的脚本语言,开发效率是先天优点。html
扩展的英文名称是Extension,php扩展是用C语言做为开发语言,基于Zend引擎提供的API,编译成的一个动态库。
若是曾经作过相似动态库调用开发的童鞋可能会更好理解一些,例如Android中的NDK开发
在php的配置文件中配置好extension的属性后,就能够引用这个动态库了。
也就是说,swoole自己是用C语言编写的,它可让php得到一些额外的function。
而后是运行方式,swoole的许多功能都只能运行在cli模式下,而cli模式每每是不少刚接触swoole的phper遇到的第一个问题。
我当初学习swoole的时候也在cli这里栽了个大跟头
咱们如今整理一下最多见的php代码执行方式:
linux
更多的细节这里就不提了,毕竟我相信每一个phper对这个都是很熟悉的。
但这里就开始出现了第一个问题,咱们知道,php是一个脚本语言,脚本语言的核心特色在于不用编译,随时执行,而执行脚本的工具就是解析器,而php的解析器就是zend引擎。
严格来讲,zend并非惟一的选择,不过,zend是最官方的。另外,Zend Studio和Zend Engine不是同一个东西,本文中的Zend所有指Zend Engine。
换个角度讲,只要有解析器,写好的php脚本就是能够执行的,而zend引擎与apache之间并无绝对的关系
实际上,apahce是调用了zend对php脚本进行执行,而后将执行结果输出给了浏览器
因此所谓cli模式(CommandLine,命令行模式),其实就是在命令行下直接调用zend引擎对php脚本进行解析并执行,并得到程序输出结果的php脚本执行方式。
其实php也能够做为shell脚原本使用哦,就像bash shell同样
既然问题讲清楚了,在一个系统中具体怎么操做呢?
本文以CentOS 7.5做为系统环境,swoole是针对linux系统开发的,windows下并不适用。学习swoole的一个前题是懂得基本的linux系统使用。
当安装好php的时候,找到php的安装目录,若是是默认安装的话,能够试试whereis命令
laravel
# 某种简单的方法
whereis php
> /usr/local/bin/php;复制代码
locate whereis find这些命令均可以试试,目的是找到php
而后咱们来写一个最经典的php脚本:sql
//vi hello_cli.php
<?php
echo 'Hello PHP Cli';复制代码
编写纯php脚本时,php标签不要封口
而后咱们在shell里执行它:shell
pecl install swoole
复制代码
执行如下命令查看是否安装成功:apache
php -m | grep swoole
> swoole复制代码
若是正确的输出了swoole,那么恭喜你,此次安装很成功
另外一个常见的比较麻烦的问题是,有些童鞋的电脑里安装了多个php,而安装的时候没有正确的安装到预期的php的扩展目录中,就会致使没法正常工做,解决方案就是弄清楚各个php安装目录及配置关系,选择正确的目录进行安装。
其实本文还没正式开始介绍swoole,都是在学习swoole以前的准备工做,swoole的上手门槛比通常的php应用要高的多,若是没有网络开发和操做系统方面的一些知识,学习它并非一件容易的事情,学习曲线很陡峭。
这句话我在群里说了无数次
个人官方群点击此处。
windows
不少新手会诟病swoole的手册写的太模糊,实际上是前置知识不足,而手册也给出了须要的前置知识列表,如下引用至官网的手册-学习swoole须要哪些知识?
多进程/多线程
浏览器
socket
缓存
IO复用
TCP/IP网络协议
调试工具
学习并理解一个新事务并非一个容易的事情,特别对于swoole这种具有必定颠覆性的工具,要有耐心和实践。
淡定的把手册看完,遇到不理解的名字学会使用搜索引擎学习,swoole的手册实际上是个大宝库,网络开发常见的问题其实里边都涉及到了。
以上内容但愿帮助到你们,不少PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提高,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货须要的能够免费分享给你们,须要的能够加入个人官方群点击此处。