精华内容
下载资源
问答
  • 很多用户在使用EasyNVR进行安防互联网直播时,出现显示“网络请求失败”问题,无法访问服务。 分析问题 遇到此问题很多用户第一反应是重启EasyNVR服务,但有时候重启大法并不能真正解决问题。此时很大可能...

    进入移动互联网时代以来,企业微信公众号已成为除官网以外非常重要的宣传渠道,当3.2亿直播用户与9亿微信用户的势能累加,在微信上开启直播已成为越来越多企业的必然选择。

    微信直播1.jpg

    青犀团队研发的EasyNVR核心在于摄像机的音视频流的获取、转换、转码与高性能分发,同时同步完成对实时直播流的录像存储,在客户端(PC浏览器、Android、iOS、微信)进行录像文件的检索、回放和下载。

    EasyNVR1 1.png

    EasyNVR方案一

    EasyNVR1 2.png

    EasyNVR方案二

    EasyNVR1 3.png

    EasyNVR方案三

    EasyNVR页面显示网络请求失败问题

    发现问题
    很多用户在使用EasyNVR进行安防互联网直播时,出现显示“网络请求失败”问题,无法访问服务。

    1.png

    2.png

    分析问题
    遇到此问题很多用户第一反应是重启EasyNVR服务,但有时候重启大法并不能真正解决问题。此时很大可能是EasyNVR后台服务已经停止,重启时表面上我们已经终止EasyNVR服务,实际上进程中nginx服务并没有停止运行,重启只会让任务管理器进程中有多个nginx服务,问题依然存在。

    3.png

    解决问题
    到这一步解决方法已经很明朗,只需要在任务管理器的进程管理中,将nginx.exe停止。然后启动easynvr服务,刷新后即可正常登陆查看。

    EasyNVR1.png

    本文转自:https://www.cnblogs.com/EasyNVR/p/11736652.html

    展开全文
  • 现在遇到的问题就是文件很大时候,会有几秒的延时 这里调用的是spring.core的ResponseEntity,代码如下 <pre><code> ("/downloadTest/{fileId}") ({(code = 200, response = File....
  • 各位大神,请问我理解的对不对,如果有问题请指正出来,遇到此类问题如果解决,TCP是工作在3层网络中,凭借TCP的接口函数,貌似从server端拿不到socket时间的时间戳,server端无法排序,我不知道有什么可以从原理上...
  • 背景描述:近期开发中遇到请求第三方接口有可能遇到超时等情况导致用户支付完成之后未通知到第三方,与第三方沟通协商之后可以做一个重发机制来处理该问题(真正的网络错误该方法无法处理)。订单也要同时更新为最终...

    背景描述:近期开发中遇到请求第三方接口有可能遇到超时等情况导致用户支付完成之后未通知到第三方,与第三方沟通协商之后可以做一个重发机制来处理该问题(真正的网络错误该方法无法处理)。订单也要同时更新为最终请求通知第三方状态成功状态。

    话不多说直接上码

    private $retryNum = 3;   重试次数
    /**
         * 加入重试队列
         * @param $result  curl请求结果
         * @param $url    url
         * @param $header   header头
         * @param $method   请求方式
         * @param $apiData    请求参数
         * @param $adminInfo   其他参数
         * @param $orderNo   订单号
         * @return string
         */
        public function addRetryQueue($result, $url, $header, $method, $apiData, $adminInfo, $orderNo)
        {
            if (isset($result['resCode']) && $result['resCode'] !== 0) {
                $apiData['retry_num'] = isset($apiData['retry_num']) ? $apiData['retry_num'] + 1 : 1;
                $info['ukey'] = $adminInfo['ukey'];
                $info['pre_table'] = $adminInfo['pre_table'];
                $info['orderno'] = $orderNo;
                //判断请求次数
    //            if ($apiData['retry_num'] <= $this->retryNum) {
                list($usec, $sec) = explode(" ", microtime());
                $microtime = (int)(((float)$usec + (float)$sec) * 1000);   //使用毫秒级防止并发
                RedisInstance::getInstance()->zAdd('Queue', $microtime + 6000, json_encode([$url, $method, $apiData, $header, $info]));
    //            }
            }
            return '';
        }
    
    
    使用swoft框架实时监听队列情况
    
    <?php
    namespace App\Boot;
    
    use GuzzleHttp\Client;
    use GuzzleHttp\TransferStats;
    use Swoft\App;
    use Swoft\Db\Query;
    use Swoft\Process\Process as SwoftProcess;
    use Swoft\Process\ProcessInterface;
    use Swoft\Redis\Redis;
    use Swoft\Process\Bean\Annotation\Process;
    use Swoft\Bean\Annotation\Inject;
    
    /**
     * Boot process
     *
     * @Process(boot=true)
     */
    class RetryConnectProcess implements ProcessInterface
    {
    
        /**
         * 进程监控队列情况
         * @param SwoftProcess $process
         * @throws \Swoft\Db\Exception\MysqlException
         */
        public function run(SwoftProcess $process)
        {
            while (true) {
                $redis = App::getBean(Redis::class);
                list($usec, $sec) = explode(" ", microtime());
                $microtime = (int)(((float)$usec + (float)$sec) * 1000);
    
                $item = $redis->zRange('yQueue', 0, 0, true);
                //current()  数组中的当前元素的值   key()返回数组内部指针当前指向元素的键名
                if ($item && current($item) <= $microtime) {
                    $queueData = json_decode(key($item), true);
                    if ($queueData) {
                        list($url, $method, $queryData, $header, $adminInfo) = $queueData;
                        $retry_num = $queryData['retry_num'];
                        unset($queryData['retry_num']);
                        $redis->zRem('Queue', key($item));
                        //curl请求重试  此处自行写入curl模拟请求,可记录日志之类的
                        $responseData //请求结果
                        $queryData['retry_num'] = $retry_num;
                        $this->addRetryQueue($responseData, $url, 'POST', $queryData, $adminInfo, $adminInfo['orderno']);
                      
                    }
                }
            }
    
        }
    
        public function check(): bool
        {
            return true;
        }
    
        /**
         * 失败数据添加到延时重试队列
         * @param $result
         * @param $url
         * @param $header
         * @param $method
         * @param $apiData
         * @param $adminInfo
         * @param $orderNo
         * @throws \Swoft\Db\Exception\MysqlException
         */
        private function addRetryQueue($result, $url, $header, $method, $apiData, $adminInfo, $orderNo)
        {
            $redis = App::getBean(Redis::class);
            if (isset($result['resCode']) && $result['resCode'] !== 0) {
                $apiData['retry_num'] = isset($apiData['retry_num']) ? $apiData['retry_num'] + 1 : 1;
                $info['ukey'] = $adminInfo['ukey'];
                $info['pre_table'] = $adminInfo['pre_table'];
                $info['orderno'] = $orderNo;
                //判断请求次数
                if ($apiData['retry_num'] <= 3) {
                    list($usec, $sec) = explode(" ", microtime());
                    $microtime = (int)(((float)$usec + (float)$sec) * 1000);
                    $redis->zAdd('Queue', $microtime + 6000, json_encode([$url, $method, $apiData, $header, $info]));
                } else {
                    //重试3次失败后记录入库
                    $apiData['header'] = $header;
                    $apiData['method'] = $method;
                    $insertData['url'] = $url;
                    $insertData['request_params'] = json_encode($apiData, JSON_UNESCAPED_UNICODE);
                    $insertData['result_data'] = json_encode($result, JSON_UNESCAPED_UNICODE);
                    $insertData['created_at'] = date('Y-m-d H:i:s');
                    Query::table($adminInfo['pre_table'] . 'api_retry_log')->insert($insertData)->getResult();
                }
            } else {
                //如果重试成功修改订单状态
                Query::table($adminInfo['pre_table'] . 'carpay_order')->where('orderno', $orderNo)->update(['status' => 2, 'pay_time'=> time()])->getResult();
            }
        }
    }
    

     

    展开全文
  • 同步延时问题解决方案

    千次阅读 2018-07-12 09:24:45
    但这种方式有个比较大的缺陷在于MySQL的同步机制 是依赖Slave主动向Master发请求来获取数据的,而且由于服务器负载、网络拥堵等方面的原因,Master与Slave 之间的数据同步延迟是完全没有保证的。短在1秒内,长则几秒...
    MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方面开发带来了极大的便利。但这种方式有个比较大的缺陷在于MySQL的同步机制 是依赖Slave主动向Master发请求来获取数据的,而且由于服务器负载、网络拥堵等方面的原因,Master与Slave 之间的数据同步延迟是完全没有保证的。短在1秒内,长则几秒、几十秒甚至更长都有可能。 

    由于数据延迟问题的存在,当应用程序在Master 上进行数据更新,然后又立刻需要从数据库中读取数据时,这时候如果应用程序从Slave上取数据(这也是当前Web开发的常规做法),就可能出现读取不到期望的数据,造成程序运行异常。 

    解决这个问题有多种方式,比如最简单的在所有的insert和update之后,强制sleep几秒钟。这是非常粗鲁的方式,对于更新操作不是很高的中小型系统,此方式基本能解决问题。 

    另外一种方式是应用程序把被更新的数据保存在本机的内存(或者集中式缓存)中,如果在写入数据完成后需要直接读取数据,则从本机内存中读取。这种方式的缺点是极大的增加了应用程序的复杂度,而且可靠性并不能完全得到保障。 

    使用MySQL Proxy可以很方便的解决这个问题。MySQL Proxy是基于MySQL Client 和 MySQL Server之间的代理程序,能够完成对Client所发请求的监控、修改。从Client角度看,通过Proxy访问Server和直接访问 Server没有任何区别。对于既有的程序而言,只要把直接被访问的Server的IP地址和端口号换成Proxy的IP地址和端口号就可以。 
    展开全文
  • 针对通用片上网络异步路由器服务质量问题,提出了一种延时无关的异步动态优先级仲裁器。通过比较请求数据包的优先级,可以实现在一个仲裁周期内按优先级由高到低输出。若优先级相同,则顺序输出。解决了传统静态优先级...
  • Promise解决连续网络请求 在调用API时,当遇到连续调用,并且需要上一个API调用的结果,或者必须等上一个请求完成后才能继续请求,通常的延时函数并不能解决办法,因为如果上一个请求较长,超过设置的等待时间,同样...

    Promise解决连续网络请求

    在调用API时,当遇到连续调用,并且需要上一个API调用的结果,或者必须等上一个请求完成后才能继续请求,通常的延时函数并不能解决办法,因为如果上一个请求较长,超过设置的等待时间,同样会出现问题,所以通常会使用callback()回调函数,但是在代码的语义理解上会比较困难,尤其是多重的调用会形成所谓的“回调地狱”。因此,可以采用Promise对象解决这种网络异步请求问题。

    在wepy框架中默认对小程序提供的API进行了Promise处理
    wepy官方文档https://tencent.github.io/wepy/document.html#/?id=%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83

    使用Promise。 框架默认对小程序提供的API全都进行了 Promise 处理,甚至可以直接使用async/await等新特性进行开发

    示例:

    var this = me;
    wepy.request({
    	//调用apiA
    })
    .then(res =>{
    	me.dataA = res.data;
    	me.apply();
    	return wepy.request({
    		//调用apiB
    	})
    })
    .then(res =>{
    	me.dataB = res.data;
    	me.apply();
    })
    //如果需要继续调用,则继续引用
    

    这样写的话代码就完全可以从字面意思上来理解整个网络请求流程,先调用A,当A调用完之后,再调用B,整个过程清晰明了,并且更符合编程逻辑。

    展开全文
  • 针对传统片上网络不同方向请求信号之间的优先级动态变化带来的服务质量问题,设计了一种延时不敏感全异步仲裁器.这种仲裁器具有自检测优先级功能,可以通过动态检测输入请求的优先级变化来自动选择两种输出方式(优先...
  • 一、起因 之前一个比较老的项目...但是在部分页面,出现了比较奇怪的问题:从Activity A打开Activity B,然后finish掉Activity B回到Activity A,这时候再次打开Activity B,Activity B中的网络请求会出现概率性无...
  • 有时候我们会因为网络问题导致ajax发送请求延时,这时候为了更好的用户体验,我们可以设置请求超时与网络异常的提示。 2. 实现 XMLHttpRequest对象中含有许多属性 设置超时时间:timeout 超时:ontimeout 如果超过这...
  • 问题背景:有的场景,Viewpager在每次切换Pager的时候去请求网络数据,刷新页面,同时在不显示的时候,又不会提前去请求数据。这就涉及到了Viewpager的预加载问题。 首先分析ViewPager预加载的原因 查看ViewPager...
  • cell中使用加载图片的网络请求出现复用,截图如下: 复用原因: Cell Model中只有一个用户的uid,所有用户相关信息:例如头像\名称\信息等是通过 block请求,通过uid 回调中取到的字段,但由于是在cell中通过...
  • 问题描述: ...3、双方网络运营商不同导致网络延迟以及丢包。 排查过程: 接口服务的系统延时: 1、程序执行时间排查 刚好系统代码有记录一次接口请求代码从执行开始到返回接口的总耗时,对1000...
  • 在使用Vue写应用时发现一个问题,每当进入一些有延时的(如网络API请求)操作时,会先闪一下未编译的 Mustache 标签{{ message }},这让人很不爽。 在官网找到了解决方案:v-cloak 参照官网做法: 定义[v-cloak]的...
  • input change 延时 防抖

    千次阅读 2019-05-23 18:29:19
    原作者: 零零博客 ... 让input propertychange事件时间...我输入一个字时,会重复执行五六次事件,事件里又包含了网络请求,体验非常差。经过搜索,找到了解决办法,详情如下。 代码 // 监听textarea的输入 $(do...
  • 综合考虑上述方法,第一种最先排除,因为如果客户把APP后台禁止或者网络连接禁止,那么就无法发给服务端请求,订单就会一直是未处理状态;第二种方法使用的比较多,不过存在准确度的问题,还有需要确认定时任务的...
  • 2.用什么指标来衡量 Linux 的网络性能和分析网络问题? 主要以下四点: 带宽、延时、吞吐率、PPS(Packet Per Second) 1.带宽 表示链路的最大传输速率,单位是 b/s (比特 / 秒),带宽越大,其传输能力就越强。 2....
  • 一、OkHttp请求方法

    2015-03-11 16:25:39
    Socket 来处理同一个服务器的所有请求如果 SPDY 不可用,则通过连接池来减少请求延时无缝的支持GZIP来减少数据流量缓存响应数据来减少重复的网络请求 OkHttp 处理了很多网络疑难杂症:会从很多常用的连接问题中自动...
  • 3、缓存响应数据来减少重复的网络请求OkHttp 处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复。一、测试使用我们的OKHttp第三方库1.第一步我们需要去创建一个 OKHttpClient 对象OkHttpClien
  •  单一用户向后端由于某种原因连续发送多次请求,由于网络延时问题当第三方机构业务未处理完(此时本地服务器已经收到用户的其他请求),由于此时未得到第三方回馈结果。结果信息无法入库,导致多个并发请求,在本地...
  • 如果 SPDY 不可用,则通过连接池来减少请求延时 无缝的支持GZIP来减少数据流量 缓存响应数据来减少重复的网络请求  OkHttp 处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复。如果...
  • 问题:ping第一包丢失? 看前期帖子解释,一台pc主机ping命令,第一包丢失是由于没有对方mac地址,要进行ARP请求和回应,但实验抓包发现,在发送第一包ICMP命令前,...
  • 针对信息中心网络(ICN)中终端用户体验不佳、网络资源利用率低等不足,对ICN中联合多径拥塞控制和请求转发问题展开研究。将该问题看成是以用户吞吐量最大化和总体网络成本最小化为目标的全局优化问题,通过分解策略...
  • 在使用Vue写应用时发现一个问题,每当进入一些有延时的(如网络API请求)操作时,会先闪一下未编译的 Mustache 标签{{ message }},这让人很不爽。
  • get,post,put,delete,patch的区别前端性能优化项目性能优化常用的http状态码如何进行项目自测如何修复紧急线上bug前端如何做信息攻防在微信支付中如何防止用户重复提交(在请求延时的情况下)token怎么处理,以及怎么...
  • 网络协议滑动窗口请求应答式交互时,处理超时未响应的请求。一种笨笨的办法就是,使用一个后台线程,遍历所有对象,挨个检查。这种笨笨的办法简单好用,但是对象数量过多时,可能存在性能问题,检查间隔时间不好...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 209
精华内容 83
关键字:

网络请求延时问题