zoukankan      html  css  js  c++  java
  • legend3---laravel脚本运行40s报错

    legend3---laravel脚本运行40s报错

    一、总结

    一句话总结:

    【代码逻辑错误】:录入博客稍有问题就报错return,这样就【直接return到最外层的load_blog】,所以在load_blog中接下来执行的时候【就没有参数】了,所以就出错了

    1、调试bug比较好的方式?

    在日志中【打印中间结果】,如果想要自己结果显示更方便,可以用【自定义日志】

    2、【循环中,不要直接return数据】?

    循环中,不要直接return数据,可以等【循环完后,统计数据】

    二、laravel脚本运行40s报错

    1、现象

    录入博客的时候脚本运行40s稳定报错,如下图:

    原因是【load_blog方法被重复运行】,在第40s的时候load_blog方法重复执行,不过第二次运行的时候没有传过去的日期数据,所以这里报错

    因为是录入博客数据,爬取多篇博客比较耗费时间,所以在程序中设置了脚本不限时

    set_time_limit(0);

    但是laravel对脚本或者方法时长应该还有其它设置,照上面的现象,【估计是方法超时了会重复执行】

    可以看到load blog等方法被执行了两次,第一次有日期参数,第二次没有,所以第二次就停了,报LoadBlogEntrance错误

    2、检查脚本是不是被超时关闭

    可以在执行的方法中加入如下代码:

    for ($i=0;$i<10000*10000;$i++){
        if($i%1000==0) dump($i);
    }

    循环到10000*10000,所花时间为5.5min,且并没有被异常关闭

    如此结果证明脚本不是被超时关闭,更像是被laravel机制重复执行了方法

    并且当加了300W次循环之后,执行时间稳定在52s

    3、使用队列还是有同样的问题

    4、可以看到是服务器内部错误,其实问题应该是【代码写的有问题】

    估计是有出错就返回的代码逻辑有问题

    解决思路应该是好好调整一下录取博客逻辑

    5、问题原因

    录入博客稍有问题就报错return,这样就直接return到最外层的load_blog,所以load_blog的时候就没有参数了,所以就出错了

    看这份日志信息,其实挺明确的

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    npm 一些常用的命令
    Angular Encapsulation
    隐藏scrollbar
    Vue生命周期详解(1)- 单个组件
    如何自己制作iconfont
    day07-2018-10--25 深浅拷贝
    day06-2018-10--24 小数据池和编码
    day05-2018-10--23 字典
    day04-2018-10--22python基础
    day03-2018-10-19-python基础
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/14484012.html
Copyright © 2011-2022 走看看