关于代码设计缺陷导致网站500的思考

关于代码设计缺陷导致网站500的思考

在制作倦韵音乐播放器的时候,我没考虑过如果API无法访问的时候会怎么样󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄢󠄤󠄧󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄥󠄡󠄨󠄠󠄡󠄢󠄨󠄧󠄬󠅒󠅢󠄟󠄮󠇕󠅰󠆖󠇖󠅴󠅿󠇕󠅽󠆊󠇕󠆞󠆒󠄐󠇗󠅹󠅸󠇖󠆍󠅳󠇖󠅹󠅰󠇖󠆌󠅹󠄬󠅒󠅢󠄟󠄮

比如在以下代码中,我是直接在php内进行一个CURL,获取到数据后再转化为JSON,然后再写入缓存中后,return出json。󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄢󠄤󠄧󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄥󠄡󠄨󠄠󠄡󠄢󠄨󠄧󠄬󠅒󠅢󠄟󠄮󠇕󠅰󠆖󠇖󠅴󠅿󠇕󠅽󠆊󠇕󠆞󠆒󠄐󠇗󠅹󠅸󠇖󠆍󠅳󠇖󠅹󠅰󠇖󠆌󠅹󠄬󠅒󠅢󠄟󠄮

        $url = $source . '/?type=' . $type . '&id=' . $id;
    
        $output = JY_MUSICPLAYER_CURL($url);
        $output = json_decode($output, true);
        if($output['error']){
           return '""';
        }
    
        // 转换成你需要的格式
        $jsArray = array_map(
            function ($item) {
                return [
                    'musictitle' => $item['name'],
                    'musicurl' => $item['url'],
                    'musicimg' => $item['pic'],
                    'lyrurl' => $item['lrc']
                ];
            },$output
        );
    
        // 将 PHP数组转换为JSON字符串
        $jsArray = json_encode($jsArray);
    
        // 将结果存入缓存文件
        file_put_contents($cache_file, $jsArray);
    
        return $jsArray;

但是这会导致一个问题,如果CURL的目标地址由于一些问题(网站崩溃/无法访问/证书失效)等等原因无法获取到数据,就会导致后面转为JSON的过程中报错,导致服务器500,这是绝对不能允许发生的。

所以给我的启发就是:只要进行涉及访问HTTP操作的时候就一定要带上try catch来进行一个异常的处理。

try{
    ··你的代码··
}catch(Throwable $e){
    ··异常的处理··
}

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容