如皋网站优化【如皋开通400电话】如皋网站搭建、如皋微信公众号推文外包、如皋开通京东拼多多设计、如皋淘宝装修-网站制作-网站建设【企业网站制作|网页设计】- 高端网站建设 - 书生商友信息科技-

全国热线:400-111-6878

网站建设推广专家

如皋网站优化【如皋开通400电话】如皋网站搭建、如皋微信公众号推文外包、如皋开通京东拼多多设计、如皋淘宝装修

发表日期: 2021-04-26 09:35:07 浏览次数:217

如皋网站优化【如皋开通400电话】如皋网站搭建、如皋微信公众号推文外包、如皋开通京东拼多多设计、如皋淘宝装修


如皋市,简称“如”或“皋”,江苏省辖县级市,由南通市代管,江苏省历史文化名城。地处长江三角洲北翼,位于南通、泰州、苏州三市交界处,南与张家港市隔江相望,北与海安市、东与如东县连接、东南与南通市通州区毗邻,西与泰兴市、西南与靖江市接壤。全市总面积1477平方公里(不含长江水面),长江水面99平方千米。如皋长江岸线全长48千米,可直接利用长江深水岸线18.6千米。

如皋市被国际自然医学会评为世界六大长寿乡之一。 [1]  如皋市户籍人口约142万。截至2021年1月1日,全市80周岁以上高龄老人68031人,90周岁以上高龄老人10150人,百岁老人达525位,其中105岁以上达16位。 [2] 

2019年6月17日,如皋被中华人民共和国住房和城乡建设部选取作为开展规范城市户外广告设施管理工作试点城市。 [3]  2019年10月8日,被评为2019年度全国综合实力百强县市、2019年度全国绿色发展百强县市、2019年度全国新型城镇化质量百强县市、2019全国营商环境百强县。 [4-6]  2020年12月,社科院发布《全国县域经济综合竞争力100强》,如皋排名第31 [7]  。

参考:用于性能分析的XHprof扩展类库

例如在Hello World接口服务中,添加一个操作埋点。

// $ vim ./Shop/Api/Welcome.php
    public function say() {
        DI()->tracer->mark('欢迎光临');

        return 'Hello World';
    }复制代码

再次请求,并使用&__debug__=1开启调试模式后会看到类似这样的返回结果。

{
    "ret": 200,
    "data": "Hello World",
    "msg": "",
    "debug": {
        "stack": [
            "[#0 - 0ms]/path/to/PhalApi/Public/shop/index.php(6)",
            "[#1 - 5.4ms - 欢迎光临]/path/to/PhalApi/Shop/Api/Welcome.php(13)"
        ],
        "sqls": []
    }}复制代码

可以看出,在“开始读取数据库”前消耗了5.4毫秒,以及相关的代码位置。

当有未能捕捉的接口异常时,开启调试模式后,框架会把对应的异常转换成对应的返回结果,并在debug.exception中体现。而不是像正常情况直接500,页面空白。这些都是由框架自动处理的。

继续上面的示例,让我们故意制造一些麻烦,手动抛出一个异常。

// $ vim ./Shop/Api/Welcome.php
    public function say() {
        DI()->tracer->mark('欢迎光临');

        throw new Exception('这是一个演示异常调试的示例', 501);

        return 'Hello World';
    }复制代码

再次请求后,除了SQL语句和自定义埋点信息外,还会看到这样的异常堆栈信息。

{
    "ret": 501,
    "data": [],
    "msg": "这是一个演示异常调试的示例",
    "debug": {
        "exception": [
            {
                "function": "say",
                "class": "Api_Welcome",
                "type": "->",
                "args": []
            },
            ... ...
        ],
        "stack": ... ...,
        "sqls": ... ...
    }}复制代码

然后便可根据返回的异常信息进行排查定位问题。

当需要添加其他调试信息时,可以使用DI()->response->setDebug()进行添加。

如:

$x = 'this is x';$y = array('this is y');DI()->response->setDebug('x', $x);DI()->response->setDebug('y', $y);复制代码

请求后,可以看到:

    "debug": {
        "x": "this is x",
        "y": [
            "this is y"
        ]
    }复制代码

2.2.5 扩展你的项目

调整响应结构

默认返回的是ret字段、data字段和msg字段。如果需要使用其他字段名称,可以重写PhalApi_Response::getResult(),然后重新注册即可。请在父类返回的基础上再作调整,以保持对调试模式和后续新增基础功能的支持。

例如,类似微信开放平台的接口一样,成功时只返回data字段,失败时则只返回ret字段和msg字段,并分别改名为status字段和errormsg字段。

// $ vim ./Shop/Common/Response/Result.php<?phpclass Common_Response_Result extends PhalAPi_Response_JSON {

    public function getResult() {
        $newRs = array();

        $oldRs = parent::getResult();
        if ($oldRs['ret'] >= 200 && $oldRs['ret'] <= 299) {
            $newRs = $oldRs['data'];
        } else {
            $newRs['status'] = $oldRs['ret'];
            $newRs['errormsg'] = $oldRs['msg'];
        }

        if (isset($oldRs['debug']) && is_array($newRs)) {
            $newRs['debug'] = $oldRs['debug'];
        }

        return $newRs;
    }}复制代码

重写并实现后,需要重新注册DI()->response服务,这里是在Shop项目的入口文件进行重新注册。

// $ vim ./Public/shop/index.php// 调整返回结构DI()->response = 'Common_Response_Result';复制代码

随后,再访问接口服务,便可看到返回的结构已发生变化。例如访问默认接口服务?service=Default.Index,会返回:

{
    "title": "Hello World!",
    "content": "PHPer您好,欢迎使用PhalApi!",
    "version": "1.4.0",
    "time": 1495007735}复制代码

使用其他返回格式

除了使用JSON格式返回外,还可以使用其他格式返回结果。

例如在部分H5混合应用页面进行异步请求的情况下,客户端需要服务端返回JSONP格式的结果,则可以这样在初始化文件./Public/init.php中去掉以下注释。

if (!empty($_GET['callback'])) {
    DI()->response = new PhalApi_Response_JsonP($_GET['callback']);}复制代码

当需要返回一种当前PhalApi没提供的格式,需要返回其他格式时,可以:

c51c866ffa1ab3457f2021e8bbdbcc1.jpg

如皋网站优化如皋开通400电话如皋网站搭建、如皋微信公众号推文外包、如皋开通京东拼多多设计、如皋淘宝装修

上一条:如皋400电话办理【如皋网站公司】如皋百度优化、如皋域名注册、如皋网店美工、如皋微信公众号托管
下一条:如皋小程序制作【如皋企业邮箱】如皋网站外包、如皋微信商城开发、如皋网店美工、如皋淘宝设计
网站制作
小程序制作
网站优化
网站开发
400电话办理
网络推广
网站建设
网店装修
微信公众号开发
网页设计
网络公司
域名企业邮箱
服务器空间
网站案例报价
百科问答
编辑排版美工
App软件开发
百度推广
代运营托管
logo设计
网络全网营销
网站备案
网站定制
小程序开发公司
首页
电话
立即预约