下载workerman,放入thinkphp,注意与Home平级,就把workerman当做是一个模块。进入Home/Controller目录,新建WorkermanController.class.php。
直接上源码,这里我是以守护进程方式运行的,调试的话,可以去掉daemonize = true 这行。
name = 'Worker';
$worker->count = 2;
//$worker->transport = 'udp';// 使用udp协议,默认TCP
$worker->onWorkerStart = function($worker){
echo "Worker starting...\n";
};
$worker->onMessage = function($connection, $data){
static $request_count = 0;// 已经处理请求数
//$_rs=D("Article")->gettest();
$_articleObj=A("article");
$_rs=$_articleObj->gettest();
var_dump($_rs);
$connection->send("hello");
/*
* 退出当前进程,主进程会立刻重新启动一个全新进程补充上来,从而完成进程重启
*/
if(++$request_count >= MAX_REQUEST){// 如果请求数达到1000
Worker::stopAll();
}
};
$worker->onBufferFull = function($connection){
echo "bufferFull and do not send again\n";
};
$worker->onBufferDrain = function($connection){
echo "buffer drain and continue send\n";
};
$worker->onWorkerStop = function($worker){
echo "Worker stopping...\n";
};
$worker->onError = function($connection, $code, $msg){
echo "error $code $msg\n";
};
// 运行worker
Worker::runAll();
}
}修改Workerman/Worker.php源码,找到parseCommand()方法,workerman版本3.3.2的话,在586行,修改命令行检测语法:
OK,此时大功告成。
Linux命令行下运行,注意,此处要切换到thinkphp根目录下面
/usr/local/php/bin/php index.php Workerman/index start查看运行状态:
/usr/local/php/bin/php index.php Workerman/index status
上一篇:vscode中tab键无效怎么办
下一篇:workerman是不是多线程的