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

Posted IT-source

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了源码时代前端干货分享|swoole开启后无法访问问题相关的知识,希望对你有一定的参考价值。

首先说一下环境,由于swoole只能在linux环境中使用,开发者通常使用的windows系统,所以我的 swoole是安装在 Cygwin环境中的。Cygwin可以在windows系统中运行,提供一个类似linux命令行的环境。同时,也虚拟机不同,Cygwin可以直接使用系统资源(比如:使用端口),swoole开启的服务器应该是可以直接使用浏览器访问的。

然后说一下问题,根据官方网站的swoole案例写了以后,打死都访问不了。浏览器一直在pending等待服务器响应。
复制swoole官方网站的案例:

<?php
$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();


运行服务器:


浏览器访问:

问题出现了,一直等待,直到永远!!!

在百度、Google、 sogou.com 、 so.com 各大搜索引擎折腾了一天。让人崩溃的是 Cygwin重装过3次,关闭了杀毒软件、防火墙,仔细查阅了swoole的各种文档、各种文章,依然是一直等待。更让人崩溃的是,终于在swoole安装包中发现了一个 examples目录,下面有一个 http目录,里面有一个 server.php 文件。

复制过来运行一下,居然可以使用了,不再是pending等待了。 仔细一看,就多了一个参数:

估计是官网上的代码与最新下载的代码版本不同,或者 Cygwin与linux中pecl安装的swoole默认环境不同,所以必须写出第3个参数 SWOOLE_BASE。
于是,问题就这么解决了。

最后整理一下demo的代码如下:
<?php
$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开启后无法访问问题的主要内容,如果未能解决你的问题,请参考以下文章

源码时代前端干货分享| JavaScript编程优化,超强入门必备技能!

源码时代前端干货分享|new关键字底层原理-执行过程

源码时代前端干货分享|new关键字底层原理-执行过程

源码时代前端干货分享|从零动手封装一个通用的vue按钮组件

源码时代前端干货分享| threejs 开发使用插件Gui.js与three.js引擎如何联合使用

源码时代Java干货分享|手把手教你SpringBoot配置ssl证书