目录
初探 Swoole -- 用 Swoole 启动一个 hello world
初级应用 -- 实现用户注册登录 [撰写中]
展望 -- Swoole 的局限性分析及我个人的期待 [撰写中]
Old time sake
还记得我们第一个 PHP 程序吗?
<?php
echo "hello world";
把他保存到 hello.php
, 访问 http://localhost/hello.php
就可以输出 hello world. 很多人就是这两行代码引入了 PHP 的大门.
Here we go
我们用 Swoole 来做一个
<?php
$http = new swoole_http_server('0.0.0.0', 80, SWOOLE_BASE);
$http->on('request', function(swoole_http_request $req, swoole_http_response $res) use($http) {
$res->write("hello world");
$res->end();
});
OK, 看出了吧, 不依赖框架/ ob_flush 等机制, Swoole 不能再使用 echo 作为输出方法了, 得使用$res->write(String $content)
和 $res->end(String $endContent)
.
那么我们怎么访问它呢?
命令行启动
php app.php
# 你在代码里面 echo/var_dump/print(_r) 的内容将在这里输出
然后在浏览器打开 http://localhost/
就可以得到 hello world
的输出.
可是发现了吗? http://localhost/
和 http://localhost/xxx
都输出同样的内容.
如果我们只想让 php 在 http://localhost/
下输出, 怎么写呢?
<?php
$http = new swoole_http_server('0.0.0.0', 80, SWOOLE_BASE);
$http->on('request', function(swoole_http_request $req, swoole_http_response $res) use($http) {
if($req->server['request_uri'] == '/'){
$res->write("hello world");
$res->end();
return;
}
$res->end('404');
return;
});
\Swoole_http_request $req
包含了很多我们将来能用到的请求数据. 包括 $req->server
, $req->get
, $req->post
, 数组结构, ->server的KEY 为小写
提前说个坑, swoole http request 对象的 server 数据不完整, 获取不到诸如 connection/origin 等头信息.
[本节完, 文字未校对, 程序待测试]