Esempio n. 1
0
    protected function displayAdmin()
    {
        $this->checkRedirect();
        $ip_list_str = implode("\r\n", $this->phpServerIpList);
        $html = <<<EOT
<html>
<head>
<title>PHPServer集群管理</title>
</head>
<body>
<form method="get" action="/admin">
<h3>phpserver集群ip列表</h3>
<textarea name="ip_list" style="width:18em;height:400px">
{$ip_list_str}
</textarea>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name='保存' value='保存'/ >
</form>
</body>
</html>
EOT;
        return $this->sendToClient(HTTP::encode($html));
    }
    protected function display($rsp_data = '', $cost = '', $services = array())
    {
        $value_data = '';
        $class = isset($_POST['class']) ? $_POST['class'] : '';
        $func = isset($_POST['func']) ? $_POST['func'] : '';
        $rsp_data = !is_scalar($rsp_data) ? var_export($rsp_data, true) : $rsp_data;
        $cost = $cost ? round($cost, 5) : '';
        // 默认给个测试参数
        if (empty($_POST)) {
            $class = "";
            $func = "";
            $_POST['value'][] = '';
        }
        if (isset($_POST['value'])) {
            foreach ($_POST['value'] as $value) {
                $value_data .= '<tr><td>参数</td><td><input type="text" name="value[]" style="width:480px;" value=\'' . htmlspecialchars($value, ENT_QUOTES) . '\' autocomplete="off" disableautocomplete/> <a href="javascript:void(0)" onclick="delParam(this)">删除本行</a></td></tr>';
            }
        } else {
            $value_data = '<tr><td>参数</td><td><input type="text" name="value[]" style="width:480px;" value="" /> <a href="javascript:void(0)" onclick="delParam(this)">删除本行</a></td></tr>';
        }
        $services = json_encode($services);
        $display_data = <<<HHH
<html>
    <head>
        <meta charset=utf-8>
        <title>Thrift Rpc test tool</title>
        <script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.8/jquery.min.js"></script>
    </head>
    <body>
        <b style="color:red"></b>
        </br>
        <b>数组使用array(..)格式,bool直接使用true/false,null直接写null</b>
        </br>
        <form action="" method="post">
            <table>
                <tr>
                    <td>类</td>
                    <td><input id='service_class' type="text" name="class" style="width:480px;" value="{$class}" autocomplete="off" disableautocomplete/></td>
                </tr>
                <tr>
                    <td>方法</td>
                    <td><input id='service_method' type="text" name="func" style="width:480px;" value="{$func}"  autocomplete="off" disableautocomplete/></td>
                </tr>
                <tbody id="parames">
                   {$value_data}
                </tbody>
                <tfoot>
                    <tr>
                        <td colspan="2"><a href="javascript:void(0)" onclick="addParam()">添加参数</a></td>
                    </tr>
                      <tr>
                        <td colspan="2" align="center">
                        <input style="padding:5px 20px;" type="submit" value="submit" />
                        <br>
                        </td>
                    </tr>
                </tfoot>
            </table>
        </form>
        <b>Return Data: </b><pre>{$rsp_data}</pre><br>
        <br><br>
\t<table>
<tr>
<td>

</td>
<td width=24px>
</td>
<td>

</td>
</tr>
    </table>
    
        <b>耗时:</b>{$cost}秒
        <div id='service' style="position:absolute;left:200;display:none"></div>
        <script type="text/javascript">
            var services = {$services};
            function addParam(value , auto ) {
                var style = auto ? 'width:480px;color:#BBBBBB' : 'width:480px;';
                var auto_flag = auto ? 'auto="true"' : '';
                value = value ? value : '';
                \$('#parames').append('<tr><td>参数</td><td><input class="service_param" type="text" name="value[]" style="'+style+'" value="'+value+'" '+auto_flag+'/> <a href="javascript:void(0)" onclick="delParam(this)">删除本行</a></td></tr>');
            }
            
            function delParam(obj) {
                \$(obj).parent('td').parent('tr').remove();
            }
            var last_input_id = '';
            \$(document).click(
                function(event)
                {
                    var div = \$("#service");
                    var e = \$(event.target);
                    // 处理类
                    if(e.attr('id') && e.attr('id') == 'service_class')
                    {
                          \$.ajax({
                              type: "get",
                              dataType: "json",
                              url: "/?ajax_get_service",
                              async : false,
                              complete :function(){},
                              success: function(msg){
                                 services = msg;
                              }
                          }); 
                          
                          div.empty();
                          \$.each(services, function(key,value){div.append('<a class="list_class_item" href="#" onclick="return false">'+key+'</a>')});
                          div.css("top",\$('#service_class').offset().top+\$('#service_class').height()+7);
                          div.css("left",\$('#service_class').offset().left);
                          div.css("width",\$('#service_class').width()+2);
                          div.fadeIn();
                          last_input_id = 'service_class';
                          return;
                    }
                    // 处理方法
                    if(e.attr('id') && e.attr('id') == 'service_method')
                    {
                          div.empty();
                          if(\$("#service_class").attr('value') && services[\$("#service_class").attr('value')])
                          {
                              \$.each(services[\$("#service_class").attr('value')], function(key, value){
                                  div.append('<a class="list_method_item" href="#" onclick="return false">'+key+'</a>');
                              });
                              div.css("top",\$('#service_method').offset().top + \$('#service_class').height()+7);
                              div.css("left",\$('#service_method').offset().left);
                              div.css("width",\$('#service_method').width()+2);
                              div.fadeIn();
                          }
                          last_input_id = 'service_method';
                          return;
                    }
                    // 处理点击类提示浮层
                    if(e.attr('class') && e.attr('class') == 'list_class_item')
                    {
                        \$('#service_class').attr('value',e.html());
                        \$("#service").fadeOut();
                    }
                    // 处理点击方法提示浮层
                    if(e.attr('class') && e.attr('class') == 'list_method_item')
                    {
                        \$('#service_method').attr('value',e.html());
                        // 创建参数栏
                        \$("#parames").empty();
                        if(\$("#service_class").attr('value') && services[\$("#service_class").attr('value')] && services[\$("#service_class").attr('value')][\$('#service_method').attr('value')])
                        {
                            \$.each(services[\$("#service_class").attr('value')][\$('#service_method').attr('value')], function(i,v){
                               addParam(v, true);
                            });
                        }
                        \$("#service").fadeOut();
                    }
                    // 处理参数input
                    if(e.attr('class') && e.attr('class') == 'service_param')
                    {
                        if(e.attr('auto'))
                        {
                            e.removeAttr('auto');
                            e.attr('value', '');
                            e.css('color','#333333');
                        }
                    }
                    // 让浮层淡出
                    if(!e.attr('id') || e.attr('id') != last_input_id)
                    {
                        \$("#service").fadeOut();
                    }
                }
            );
        </script>
        <style type="text/css">
            #service {background:#EEEEEE}
            .list_class_item, .list_method_item {border-bottom: 1px solid #AAAAAA;display:block;padding:3px 10px;color:#333333;}
            A:link {color:#333333; text-decoration:none}
            A:hover {text-decoration:none;background:#DDDDDD}
        </style>
        
    </body>
</html>    
HHH;
        $this->sendToClient(HTTP::encode($display_data));
    }
Esempio n. 3
0
    protected function display($req_text = '', $rsp_text = '', $rsp_data = '', $msg = '', $cost = '')
    {
        $value_data = '';
        $class = isset($_POST['class']) ? $_POST['class'] : '';
        $func = isset($_POST['func']) ? $_POST['func'] : '';
        $rsp_data = !is_scalar($rsp_data) ? var_export($rsp_data, true) : $rsp_data;
        $cost = $cost ? round($cost, 5) : '';
        // 默认给个测试参数
        if (empty($_POST)) {
            $class = "Cart_User";
            $func = "getUserByUid";
            $_POST['value'][] = 5100;
        }
        $post_address = '127.0.0.1:2201';
        if (isset($_POST['address'])) {
            $post_address = $_POST['address'];
        }
        $address_data = '<tr><td>地址:</td><td>
        <select name="address">';
        $address_array = $this->getAddress();
        foreach ($address_array as $address => $address_and_name) {
            $selected = $address == $post_address ? 'selected="selected"' : '';
            $address_data .= '<option value ="' . $address . '" ' . $selected . '>' . $address_and_name . '</option>';
        }
        $address_data .= '
        </select>
        </td></tr>';
        if (isset($_POST['value'])) {
            foreach ($_POST['value'] as $value) {
                $value_data .= '<tr><td>参数</td><td><input type="text" name="value[]" style="width:480px;" value=\'' . htmlspecialchars($value, ENT_QUOTES) . '\' /> <a href="javascript:void(0)" onclick="delParam(this)">删除本行</a></td></tr>';
            }
        } else {
            $value_data = '<tr><td>参数</td><td><input type="text" name="value[]" style="width:480px;" value="" /> <a href="javascript:void(0)" onclick="delParam(this)">删除本行</a></td></tr>';
        }
        $display_data = <<<HHH
<html>
    <head>
        <meta charset=utf-8>
        <title>Rpc test tool</title>
        <script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.8/jquery.min.js"></script>
    </head>
    <body>
        <b style="color:red">{$msg}</b>
        </br>
        <b>数组使用array(..)格式,bool直接使用true/false,null直接写null</b>
        </br>
        <form action="" method="post">
            <table>
                {$address_data}
                <tr>
                    <td>类</td>
                    <td><input type="text" name="class" style="width:480px;" value="{$class}" /></td>
                </tr>
                <tr>
                    <td>方法</td>
                    <td><input type="text" name="func" style="width:480px;" value="{$func}" /></td>
                </tr>
                <tbody id="parames">
                   {$value_data}
                </tbody>
                <tfoot>
                    <tr>
                        <td colspan="2"><a href="javascript:void(0)" onclick="addParam()">添加参数</a></td>
                    </tr>
                      <tr>
                        <td colspan="2" align="center">
                        <input style="padding:5px 20px;" type="submit" value="submit" />
                        <br>
                        </td>
                    </tr>
                </tfoot>
            </table>
        </form>
        <b>Return Data: </b><pre>{$rsp_data}</pre><br>
        <b>Request Text:</b><br>
        <form action="" method="post">
        <textarea style="width:98%;height:120px" name="req_data">{$req_text}</textarea><br>
        <input style="padding:5px 20px;" type="submit" value="submit" />
        </form>
        <br><br>
\t<table>
<tr>
<td>

</td>
<td width=24px>
</td>
<td>

</td>
</tr>

</table>
       <b>Return Text:</b><br>
        <textarea style="width:98%;height:300px">{$rsp_text}</textarea><br>
        <br>
        <b>耗时:</b>{$cost}秒
        <script type="text/javascript">

            function addParam() {
                \$('#parames').append('<tr><td>参数</td><td><input type="text" name="value[]" style="width:480px;" value="" /> <a href="javascript:void(0)" onclick="delParam(this)">删除本行</a></td></tr>');
            }
            
            function delParam(obj) {
                \$(obj).parent('td').parent('tr').remove();
            }
        </script>
    </body>
</html>    
HHH;
        $this->sendToClient(HTTP::encode($display_data));
    }