<?php
// 通过链接参数热重载 worker 进程观察触发事件
$act = $request->get['act']?$request->get['act']:'';
if ($act == 'reload') {
    echo '    ... Swoole Reloading ! ... ' . PHP_EOL . PHP_EOL;
    // 触发 reload 之后, 貌似后面的代码也还是会执行的
    $server->reload();
    echo '    ... Under Reload ! ... ' . PHP_EOL . PHP_EOL; // 看看 reload 时是否会执行后续的代码
} 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;
    $server->shutdown();
    echo '    ... After Swoole Shutdown ! ... ' . PHP_EOL . PHP_EOL;
}
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';
            $response->end(json_encode(array('status'=>1,'message'=>'执行成功','data'=>$res)));
        }else{
            echo 'fail1';
            $response->end(json_encode(array('status'=>0,'message'=>'执行失败')));
        }
    }else{
        echo 'fail2';
        $response->end(json_encode(array('status'=>0,'message'=>'执行失败')));
    }
}catch(Exception $ex){
    throw new Exception($ex->getMessage(),$ex->getCode());
}