swoole_server->start

启动server,监听所有TCP/UDP端口,函数原型:

bool swoole_server->start()

例子:

<?php
$serv = new swoole_server("127.0.0.1", 9501);
$serv->set(array(
    'worker_num' => 8,   //工作进程数量
    'daemonize' => false, //是否作为守护进程
));
$serv->on('connect', function ($serv, $fd){
    echo "Client:Connect.\n";
});
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
    $serv->send($fd, 'Swoole: '.$data);
    $serv->close($fd);
});
$serv->on('close', function ($serv, $fd) {
    echo "Client: Close.\n";
});
$serv->start();

启动成功后会创建worker_num+2个进程。主进程+Manager进程+worker_num个Worker进程。

启用task_worker会增加相应数量的子进程
函数列表中start之前的方法仅可在start调用前使用,在start之后的方法仅可在start调用后使用

主进程

主进程内有多个Reactor线程,基于epoll/kqueue进行网络事件轮询。收到数据后转发到worker进程去处理

Manager进程

对所有worker进程进行管理,worker进程生命周期结束或者发生异常时自动回收,并创建新的worker进程

worker进程

对收到的数据进行处理,包括协议解析和响应请求。

启动失败扩展内会抛出致命错误,请检查php error_log的相关信息。errno={number}是标准的Linux Errno,可参考相关文档。
如果开启了log_file设置,信息会打印到指定的Log文件中。

如果想要在开机启动时,自动运行你的Server,可以在/etc/rc.local文件中加入

/usr/bin/php /data/webroot/www.swoole.com/server.php

常见的错误