HTTP服务器server程序介绍—StateThreads示例程序介绍
作者:罗上文,微信:Loken1,公众号:FFmpeg弦外之音
server
是官网提供的示例程序,演示了如何使用 StateThread
协程来实现一个 HTTP 服务器,下面就来演示一下 server
程序的基本用法。
server
HTTP 服务器的启动命令如下:
cd obj/
# 创建日志目录
mkdir ./log
./server -l ./log -p 5 -b 192.168.0.109:8888
重点参数如下:
1,-l 指定日志目录
-l ./
是设置日志目录为当前目录,运行之后,server 服务器的日志会保存到 log/errors
文件里面。如下
pid
文件里面记录的是 父级进程的 ID
2,-p 指定进程数量
-p 5
代表启动 5 个进程来处理 HTTP 请求,这是 StateThread
程序的惯例,如果你要利用多核,只能开多个进程,每个进程里面再创建多个协程。不能只开一个进程,然后在这个进程里面开多线程,每个线程再开多个协程。
不过这个问题,在 SRS 里面被解决了,他们已经做好了 多线程多协程功能,具体请阅读《SRS的多线程多协程架构》。
我们可以用 ps
命令查看一下 server 的进程数量,如下:
ps -Al | grep server
可以看到,确实有 5 个进程在处理 HTTP 请求,但是可以看到还有 第 6 个 server 进程,进程 ID 是 20946。他是下面 5 个子进程的 父级进程
20946 其实是一个 watch dog 进程,负责监控其他子进程的状态,如果其他子进程由于 bug 等问题死掉了,20946 进程就会重新创建一个子进程出来。
我们可以在浏览器访问这个 192.168.0.109:8888
页面,如下:
也可以使用 curl
来访问,如下:
curl http://192.168.0.109:8888