源码时代前端干货分享|swoole开启后无法访问问题

首先说一下环境,由于swoole只能在linux环境中使用,开发者通常使用的windows系统,所以我的 swoole是安装在 Cygwin环境中的。Cygwin可以在windows系统中运行,提供一个类似linux命令行的环境。同时,也虚拟机不同,Cygwin可以直接使用系统资源(比如:使用端口),swoole开启的服务器应该是可以直接使用浏览器访问的。
然后说一下问题,根据官方网站的swoole案例写了以后,打死都访问不了。浏览器一直在pending等待服务器响应。
复制swoole官方网站的案例:
源码时代前端干货分享|swoole开启后无法访问问题
文章图片

$http = new swoole_http_server("127.0.0.1", 9501);
$http->on("start", function ($server) {
echo "Swoole http server is started at http://127.0.0.1:9501\n";
});
$http->on("request", function ($request, $response) {
$response->header("Content-Type", "text/plain");
$response->end("Hello World\n");
});
$http->start();

运行服务器:
源码时代前端干货分享|swoole开启后无法访问问题
文章图片


浏览器访问:
源码时代前端干货分享|swoole开启后无法访问问题
文章图片

问题出现了,一直等待,直到永远!!!
【源码时代前端干货分享|swoole开启后无法访问问题】在百度、Google、 sogou.com 、 so.com 各大搜索引擎折腾了一天。让人崩溃的是 Cygwin重装过3次,关闭了杀毒软件、防火墙,仔细查阅了swoole的各种文档、各种文章,依然是一直等待。更让人崩溃的是,终于在swoole安装包中发现了一个 examples目录,下面有一个 http目录,里面有一个 server.php 文件。
复制过来运行一下,居然可以使用了,不再是pending等待了。 仔细一看,就多了一个参数:
源码时代前端干货分享|swoole开启后无法访问问题
文章图片

估计是官网上的代码与最新下载的代码版本不同,或者 Cygwin与linux中pecl安装的swoole默认环境不同,所以必须写出第3个参数 SWOOLE_BASE。
于是,问题就这么解决了。
最后整理一下demo的代码如下:
$http = new swoole_http_server("127.0.0.1", 9501, SWOOLE_BASE);
$http->on("request", function ($request, $response) {
$response->header("Content-Type", "text/html");
$response->end("Hello World\n");
});
$http->start();
效果:
源码时代前端干货分享|swoole开启后无法访问问题
文章图片

    推荐阅读