swoole新手教程01-环境搭建及扩展安装

写在前面的废话

《swoole源代码分析》已经写了13章,整个swoole的核心架构基本都分析的差点儿相同了。于是心里一直以来想整理swoole的文档并写一份教程的想法就再度浮了出来。

实话说,我接触swoole乃至接触PHP都仅有9个月的时间。而自7月份以来一直在公司做Android开发。也有没有了使用swoole的机会。所以,如今我仅仅能写出一份入门级教程,帮助刚刚接触swoole的人理解和使用swoole写一些简单的样例。从而初步掌握-swoole的使用方法。



Git地址:https://github.com/LinkedDestiny/swoole-doc

第一章
环境搭建及扩展安装

环境说明: 系统:Ubuntu14.04 (安装教程包含CentOS6.5)

PHP版本号:PHP-5.5.10

swoole版本号:1.7.6-stable

PHP安装

要用swoole。首先须要有PHP环境。因为swoole的某些特性,最好是可以从源代码编译安装PHP。这样在使用过程中可以避免非常多不必要的错误。

PHP下载地址:http://php.net/

在这里挑选你想用的版本号就可以。下载源代码包后,解压至本地随意文件夹(保证读写权限),留待使用。 安装PHP前。须要安装编译环境和PHP的相关依赖。以下是相关命令:

Ubuntu环境下:

sudo apt-get install build-essential gcc g++ autoconf libiconv-hook-dev libmcrypt-dev libxml2-dev libmysqlclient-dev libcurl4-openssl-dev libjpeg8-dev libpng12-dev libfreetype6-dev

CentOS环境下:

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers gd gd2 gd-devel gd2-devel perl-CPAN

(注:以上命令是我在实际使用中验证过的能够使用的,可能会和其它教程提供的命令不同) 当上述命令运行后,就可以開始安装PHP。

命令例如以下:

cd php-5.5.10/
./configure --prefix=/usr/local/php --with-config-file-path=/etc/php --enable-fpm --enable-pcntl --enable-mysqlnd --enable-opcache --enable-sockets --enable-sysvmsg --enable-sysvsem  --enable-sysvshm --enable-shmop --enable-zip --enable-ftp --enable-soap --enable-xml --enable-mbstring --disable-rpath --disable-debug --disable-fileinfo --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pcre-regex --with-iconv --with-zlib --with-mcrypt --with-gd --with-openssl --with-mhash --with-xmlrpc --with-curl --with-imap-ssl
sudo make
sudo make install
sudo cp php.ini-development /etc/php/

至此。PHP已经安装成功。可是此时在终端里是无法直接通过php --version查看php版本号的。

还须要将PHP的可运行文件夹加入到环境变量中。 使用Vim/Sublime打开~/.bashrc。在末尾加入例如以下内容:

export PATH=/usr/local/php/bin:$PATH
export PATH=/usr/local/php/sbin:$PATH

保存后。终端输入命令:

source ~/.bashrc

此时就可以通过php --version查看php版本号。看到例如以下内容:

PHP 5.5.10 (cli) (built: Apr 26 2014 09:46:14)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

即说明成功安装。

Swoole安装

安装完PHP后。就可以安装swoole扩展。

swoole扩展下载地址:https://github.com/swoole/swoole-src/releases 尽量选择stable版本号,alpha版本号最好仅用于实验新特性。

解压源代码至随意文件夹。运行例如以下命令:

cd swoole-src-swoole-1.7.6-stable/
phpize
./configure --enable-async-mysql
sudo make
sudo make install

(注:swoole的./configure有非常多额外參数,能够通过./configure --help命令查看,这里仅开启当中async-mysql项。其它均选择默认项) 安装完毕后,进入/etc/php文件夹下,打开php.ini文件,在当中加上例如以下一句:

extension=swoole.so

随后在终端中输入命令

php -m

查看扩展安装情况。假设在列出的扩展中看到了swoole,则说明成功安装。

基本实例

以下贴一个主要的基于swoole的echoserver

// Server
class Server
{
    private $serv;

    public function __construct() {
        $this->serv = new swoole_server("0.0.0.0", 9501);
        $this->serv->set(array(
            ‘worker_num‘ => 8,
            ‘daemonize‘ => false,
            ‘max_request‘ => 10000,
            ‘dispatch_mode‘ => 2,
            ‘debug_mode‘=> 1
        ));

        $this->serv->on(‘Start‘, array($this, ‘onStart‘));
        $this->serv->on(‘Connect‘, array($this, ‘onConnect‘));
        $this->serv->on(‘Receive‘, array($this, ‘onReceive‘));
        $this->serv->on(‘Close‘, array($this, ‘onClose‘));

        $this->serv->start();
    }

    public function onStart( $serv ) {
        echo "Start\n";
    }

    public function onConnect( $serv, $fd, $from_id ) {
        $serv->send( $fd, "Hello {$fd}!" );
    }

    public function onReceive( swoole_server $serv, $fd, $from_id, $data ) {
        echo "Get Message From Client {$fd}:{$data}\n";
    }

    public function onClose( $serv, $fd, $from_id ) {
        echo "Client {$fd} close connection\n";
    }
}
// 启动服务器
$server = new Server();

从代码中能够看出,创建一个swoole_server基本分三步:

1. 通过构造函数创建swoole_server对象

2. 调用set函数设置swoole_server的相关配置选项

3. 调用on函数设置相关回调函数 关于set配置选项以及on回调函数的详细说明,请參考我整理的swoole文档(临时还没有……小伙伴们耐心等两天……届时我会给出链接哒)

这里仅仅给出简介。onStart回调在server执行前被调用,onConnect在有新client连接过来时被调用,onReceive函数在有数据发送到server时被调用。onClose在有client断开连接时被调用。

这里就能够大概看出怎样使用swoole:在onConnect处监听新的连接;在onReceive处接收数据并处理。然后能够调用send函数将处理结果发送出去;在onClose处处理client下线的事件。

以下贴出client的代码:

<?php
class Client
{
    private $client;

    public function __construct() {
        $this->client = new swoole_client(SWOOLE_SOCK_TCP);
    }

    public function connect() {
        if( !$this->client->connect("127.0.0.1", 9501 , 1) ) {
            echo "Error: {$fp->errMsg}[{$fp->errCode}]\n";
        }
        $message = $this->client->recv();
        echo "Get Message From Server:{$message}\n";

        fwrite(STDOUT, "请输入消息:");
        $msg = trim(fgets(STDIN));
        $this->client->send( $msg );
    }
}

$client = new Client();
$client->connect();

这里。通过swoole_client创建一个基于TCP的client实例。并调用connect函数向指定的IP及port发起连接请求。

随后就可以通过recv()和send()两个函数来接收和发送请求。

须要注意的是。这里我使用了默认的同步堵塞client,因此recv和send操作都会产生网络堵塞。

(以上两段代码均以上传git,地址:https://github.com/LinkedDestiny/swoole-doc/tree/master/src/01)

下章预告:swoole的task使用以及实例:简单聊天室

时间: 2024-10-10 08:18:59

swoole新手教程01-环境搭建及扩展安装的相关文章

swoole入门教程01-环境搭建及扩展安装

写在前面的废话 <swoole源码分析>已经写了13章,整个swoole的核心架构基本都分析的差不多了.于是心里一直以来想整理swoole的文档并写一份教程的想法就再度浮了出来.实话说,我接触swoole乃至接触PHP都仅有9个月的时间,而自7月份以来一直在公司做Android开发,也有没有了使用swoole的机会.所以,现在我只能写出一份入门级教程,帮助刚刚接触swoole的人理解和使用swoole写一些简单的例子,从而初步掌握-swoole的用法. Git地址:https://github

iOS开发项目-01环境搭建

iOS开发项目-01环境搭建 一.基本过程 1.新建一个项目 (1)删除storyboard (2)在配置界面中,把main  删除,手动设置 2.准备素材 图片素材如下: 这个项目是模仿新浪,实现一个山寨的新浪微博系统,新版本的系统中已经放弃了非视网膜屏幕. 说白了,这种情况下,如果手机是3.5英寸的ios7系统,则看不到该启动动画. 设置方法,右键单击show in finder,修改json文件. Contents.json,对文件进行修改,让系统启动画面对3.5英寸的ios7系统提供支持

iOS开发项目篇-01环境搭建

iOS开发项目篇-01环境搭建 一.基本过程 1.新建一个项目 (1)删除storyboard (2)在配置界面中,把main  删除,手动设置 2.准备素材 图片素材如下: 这个项目是模仿新浪,实现一个山寨的新浪微博系统,新版本的系统中已经放弃了非视网膜屏幕. 说白了,这种情况下,如果手机是3.5英寸的ios7系统,则看不到该启动动画. 设置方法,右键单击show in finder,修改json文件. Contents.json,对文件进行修改,让系统启动画面对3.5英寸的ios7系统提供支

新手嘛,先学习下 Vue2.0 新手入门 — 从环境搭建到发布

Vue2.0 新手入门 - 从环境搭建到发布 转自:http://www.runoob.com/w3cnote/vue2-start-coding.html 具体文章详细就不搬了,步骤可过去看,我这就写下使用总结 1. Vue2.0 推荐开发环境中一些安装就不说了 Node.js  .npm  .webpack  .vue-cli  , 自己看着安装 到最后能启动本地通过 vue-cli 建的项目,  npm run dev  ,默认的 http://localhost:8080/ 能看到页面显

linux php环境搭建以及magento安装教程

听朋友用magento在搭建电商系统,我好奇.遂自己下载了一个包部署了一套. 主机采用linux center os6.5,安装程序非常顺利,部署一套大概费时一个小时左右. #################linux环境搭建################## 安装apache2,然后启动: yum install httpd /etc/init.d/httpd start 此时,apache能提供http服务,但是不能解析php,也不能连数据库. Apache主配置文件:/etc/httpd

[LAMP环境搭建三]PHP安装

****说明:先全部看一遍,再开始安装**** 获取PHP源码包 http://cn2.php.net/get/php-5.5.10.tar.gz/from/this/mirrorwget 安装libxml2:wget ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz./configure --prefix=/usr/local/libxml2# yum -y install python-devel 安装zlib:wget http://zlib.n

php搭建redis扩展安装及配置

1:redis 安装 $ wget http://download.redis.io/releases/redis-2.8.13.tar.gz $ tar xzf redis-2.8.13.tar.gz $ cd redis-2.8.13 $ make 2:运行redis 加载redis的配置文件redis.conf 编译后的可执行文件在src目录中,可以使用下面的命令运行Redis: $ src/redis-server redis.conf 你可以使用内置的客户端连接Redis: $ src

[LAMP环境搭建二]MySQL安装

安装前准备工作:[[email protected] src]# yum -y install bison bison-devel ncurses ncurses-devel openssl openssl-devel cmake下载安装http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz wgettar -zxvfcd./bootstrapgmakegmake install/********************************

[LAMP环境搭建一]Apache安装

vi /etc/sysconfig/network-scripts/ifcfg-eth0加入 ONBOOT=yes //启动时网络接口是否有效这样就可以自动连接网络了 /********************删除自带的apache:service httpd stopyum remove httpd/********************安装前准备:yum -y install gcc gcc-c++ libtool /*******************下载:apache源码包 注意是h