<?php

if(!empty($request->post)){
    try{
        $respData=$request->post;
        // echo json_encode($respData);
        if(isset($respData['type'])&&$respData['type']==1){
            $info=$respData['content'];
            $memberDao=$info['className']::getInstance(\Our\DbNameConst::masterDBConnectName);
            echo json_encode($info);
            if(empty($info['params'])){
                $res=call_user_func_array(array($memberDao,$info['method']),array());
            }else{
                $res=call_user_func_array(array($memberDao,$info['method']),$info['params']);
            }
            $res=(isset($res)&&!empty($res))?$res:false;
            unset($memberDao);
            \Mysql\LinkMySQLModel::unsetDbConecet();
            if($res!==false){
                echo 'success'.PHP_EOL;
                $response->end(json_encode(array('status'=>1,'message'=>'执行成功','data'=>$res)));
            }else{
                echo 'fail1'.PHP_EOL;
                $response->end(json_encode(array('status'=>0,'message'=>'执行失败')));
            }
        }else{
            echo 'fail2'.PHP_EOL;
            $response->end(json_encode(array('status'=>0,'message'=>'执行失败')));
        }
    }catch(Exception $ex){
        throw new Exception($ex->getMessage(),$ex->getCode());
        $response->end(json_encode(array('status'=>0,'message'=>'执行失败')));
    }
}else{
    // 通过链接参数热重载 worker 进程观察触发事件
    if(!empty($request->get)){
        $act = $request->get['act']?$request->get['act']:'';
        if ($act == 'reload') {
            echo '    ... Swoole Reloading ! ... ' . PHP_EOL . PHP_EOL;

            // 触发 reload 之后, 貌似后面的代码也还是会执行的
            $http->reload();
            echo '    ... Under Reload ! ... ' . PHP_EOL . PHP_EOL; // 看看 reload 时是否会执行后续的代码
            $response->end(json_encode(array('status'=>1,'message'=>'重启成功')));
        } elseif ($act == 'stop') {
            // 直接立即终止当前 worker 进程, 和 reload 的效果比较相似, 新的 worker 进程的 ID 和原来的一样
            // 所以程序内部应该尽量避免使用 exit 而应该抛出异常在外部 catch
            echo '    ... Swoole Exit ! ... ' . PHP_EOL . PHP_EOL;
            exit;
        } elseif ($act == 'shutdown') {
            // 直接立即终止当前 worker 进程, 和 reload 的效果比较相似, 新的 worker 进程的 ID 和原来的一样
            // 所以程序内部应该尽量避免使用 exit 而应该抛出异常在外部 catch
            echo '    ... Swoole Shutdown ! ... ' . PHP_EOL . PHP_EOL;
            $http->shutdown();
            echo '    ... After Swoole Shutdown ! ... ' . PHP_EOL . PHP_EOL;
        }

    }else{
        $response->end(json_encode(array('status'=>1,'message'=>'请求成功')));
    }
}
