打算开始学习swoole了(原来好像弄过: swoole环境搭建),不过那次只是接触了一下,并未太过深刻,此次从新来过 (°ー°〃)
swoole虽然能在windows上搭建,不过我以为意义不大....须要安装CygWin这和在linux上有什么区别呢┑( ̄Д  ̄)┍,恰好如今手上有一台空闲的树莓派zero,试试在上面搭建
之因此要编译安装是由于在swoole编译的时候须要用到phpize,apt-get安装的时候没发现有
如今这个上面什么东西都没有,先安装php,我选最新的php7.2.6,zero配置是真的好低....解压和编译cpu都100%了很慢....趁这个时间去干点别的吧php
下载,解压源码,安装依赖html
强烈建议使用国内镜像....否则可能一些依赖lib按照失败,致使编译错误mysql
sudo -i wget http://hk1.php.net/get/php-7.2.6.tar.gz/from/this/mirror mv mirro php.tar.gz tar -zxvf php.tar.gz apt-get update apt-get install libxml2* libbz2-dev libjpeg-dev libmcrypt-dev libssl-dev openssl libxslt1-dev libxslt1.1 libcurl4-gnutls-dev libpq-dev build-essential git make
编译配置,复制的网上的lnmp编译- -...去掉了和Nginx有关的编译项,我只须要编译出php就行,不须要Nginx那些环境,固然若是你以前已经有了这些,这一部分就能够跳过了linux
cd php-7.2.6 ./configure \ --prefix=/usr/local/php \ --exec-prefix=/usr/local/php \ --bindir=/usr/local/php/bin \ --sbindir=/usr/local/php/sbin \ --includedir=/usr/local/php/include \ --libdir=/usr/local/php/lib/php \ --mandir=/usr/local/php/php/man \ --with-config-file-path=/usr/local/php/etc \ --with-mysql-sock=/var/lib/mysql/mysql.sock \ --with-mcrypt=/usr/include \ --with-mhash \ --with-openssl \ --with-mysql=shared,mysqlnd \ --with-mysqli=shared,mysqlnd \ --with-pdo-mysql=shared,mysqlnd \ --with-gd \ --with-iconv \ --with-zlib \ --enable-zip \ --enable-inline-optimization \ --disable-debug \ --disable-rpath \ --enable-shared \ --enable-xml \ --enable-bcmath \ --enable-shmop \ --enable-sysvsem \ --enable-mbregex \ --enable-mbstring \ --enable-ftp \ --enable-gd-native-ttf \ --enable-pcntl \ --enable-sockets \ --with-xmlrpc \ --enable-soap \ --without-pear \ --with-gettext \ --enable-session \ --with-curl \ --with-freetype-dir \ --enable-opcache \ --enable-redis \ --enable-fpm \ --enable-fastcgi \ --disable-fileinfo
CPU 100% 有点怕,树莓派zero性能确实是弱...编译好慢....解决了编译配置的问题后就开始编译,我是真的睡了一觉(次日)才起来make installgit
make && make install
设置一下php.ini文件github
cp php.ini-production /usr/local/php/etc/php.ini //我输入php -v以后发现没反应,可是php确实是成功了,在/usr/local/php/bin里面./php -v也有反应,想到多是没有连接到/usr/bin 目录里,用ln命令连接一下 ln -s /usr/local/php/bin/php /usr/bin/php //连接phpize ln -s /usr/local/php/bin/phpize /usr/bin/phpize
成功以后,老套路web
php -v
成功,终于能够下一步了,进入swoole编译配置redis
从git上下载源码https://github.com/swoole/swoole-src/releases,开始编译sql
wget https://github.com/swoole/swoole-src/archive/v4.0.0.zip unzip v4.0.0.zip mv swoole-src-4.0.0/ swoole cd swoole phpize
这里我提示了一个错误...
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
解决办法:windows
apt-get install m4 autoconf
phpize成功以后继续运行编译配置和开始编译(希望此次不用那么久了...)
开启一些须要的:编译配置项
./configure --with-php-config=/usr/local/php/bin/php-config --enable-sockets --enable-swoole-debug --enable-openssl --enable-mysqlnd --enable-coroutine make && make install
而后须要在php.ini中配置下
vi /usr/local/php/etc/php.ini //添加 extension=swoole.so
而后php -m
有这一项就表明成啦~
安装编译都完成以后,固然来试试是否是真的能用了
复制官方的例子,嘿嘿嘿~
<?php //建立websocket服务器对象,监听0.0.0.0:9502端口 $ws = new swoole_websocket_server("0.0.0.0", 9502); //监听WebSocket链接打开事件 $ws->on('open', function ($ws, $request) { var_dump($request->fd, $request->get, $request->server); $ws->push($request->fd, "hello, welcome\n"); }); //监听WebSocket消息事件 $ws->on('message', function ($ws, $frame) { echo "Message: {$frame->data}\n"; $ws->push($frame->fd, "server: {$frame->data}"); }); //监听WebSocket链接关闭事件 $ws->on('close', function ($ws, $fd) { echo "client-{$fd} is closed\n"; }); $ws->start();
php swoole.php
web:
<script> var ws = new WebSocket("ws://localhost:9502"); ws.onopen = function () { ws.send("send data"); }; ws.onmessage = function (evt) { var received_msg = evt.data; console.log(received_msg); }; ws.onclose = function () { console.log("链接关闭"); }; </script>
成了~
历时一天,终于搞定了 编译真的是漫长的过程=_=