作為一款重新定義PHP的開源框架,Swoole讓PHP可以應(yīng)用于更多的場景。
對于一位PHP程序員來說,通過Swoole可以了解以往不曾接觸過的編程方法。
眾所周知,搭建開發(fā)環(huán)境其實是很麻煩的一件事,經(jīng)常會遇到各種各樣的問題。所以我用Docker搭建了一套Swoole環(huán)境,按照這篇教程,就可以非常簡單得開始Swoole之旅。
首先是安裝Docker,官網(wǎng)有詳細的安裝步驟: https://docs.docker.com/mac/step_one/
Mac用戶參考上述網(wǎng)址即可。對于其他系統(tǒng)的用戶來說,官網(wǎng)都有相應(yīng)的方法。這里不再細說。
以下的步驟也都是基于Mac系統(tǒng)來進行。
安裝完成后,在Launchpad里會看到Docker Quickstart Terminal這個名字的應(yīng)用,點擊后,會打開系統(tǒng)默認的終端,然后等一會兒,就可以看到鯨魚的畫像出現(xiàn)了。
要注意終端里的一條提示信息:
docker is configured to use the default machine with IP 192.168.99.100
記住這個IP地址,我們訪問容器時會用到。
為了驗證Docker是否運行起來,在打開的終端里輸入下面的命令:
docker images
如果Docker沒有正確運行,會看到下面的錯誤提示:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
確保Docker正確運行后,輸入下面的命令,獲取swoole鏡像:
docker pull koolob/swoole-docker
這個鏡像是基于php:5.6-cli的鏡像構(gòu)建,包括swoole的最新版本1.8.4,默認使用了下面的編譯參數(shù)進行編譯:
--enable-async-redis
--enable-async-httpclient
--enable-openssl
--enable-jemalloc
swoole的編譯參數(shù)說明:http://wiki.swoole.com/wiki/page/437.html
這個鏡像的Dockerfile是開源的,有需要搭建自定義環(huán)境的朋友可以參考我的Dockerfile文件進行修改:Github
下載鏡像后,就可以運行一個容器,進入Swoole環(huán)境了。
輸入命令:
docker run -t -i koolob/swoole-docker /bin/bash
之后會進入到容器內(nèi)。
再次輸入:
php -r 'echo swoole_version()."\n";'
可以看到輸出了1.8.4,也就是當前swoole的版本號。
這樣我們就有了一個通過Docker構(gòu)建的Swoole環(huán)境。
接下來,我們可以把代碼和環(huán)境構(gòu)建成一個鏡像來運行。依然有個示例可以參考:
git clone https://github.com/koolob/swoole-docker-example.git
下載下來后,切換到目錄中,直接執(zhí)行
./build.sh
然后瀏覽器訪問地址:http://192.168.99.100:8080/ 就可以看到結(jié)果了,同時在終端中也能看到程序輸出的內(nèi)容。在終端里使用Ctrl+C就可以退出容器。
192.168.99.100這個IP就是上文提到的終端提示的IP
我們運行的是一個非常簡單的HTTP服務(wù),代碼位于src文件夾下:
$serv = new swoole_http_server("0.0.0.0", 8080);
$serv->on('Request', function($request, $response) {
var_dump($request->get);
var_dump($request->post);
var_dump($request->cookie);
var_dump($request->files);
var_dump($request->header);
var_dump($request->server);
$response->cookie("User", "Swoole");
$response->header("X-Server", "Swoole");
$response->end("<h1>Hello Swoole!</h1>");
});
$serv->start();
build.sh腳本做的事就是構(gòu)建鏡像,并啟動一個容器。
新構(gòu)建的鏡像也很簡單,基于koolob/swoole-docker,開放8080端口,將src目錄中的內(nèi)容復(fù)制到鏡像內(nèi),并在容器運行時,執(zhí)行php代碼。
之后要做的事就是修改src中的代碼,執(zhí)行build.sh腳本,然后測試。
至此,我們的Swoole開發(fā)環(huán)境搭建完畢。