首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lysS
V2EX  ›  问与答

PHP 如何处理致命错误???

  •  
  •   lysS · 43 天前 · 900 次点击
    这是一个创建于 43 天前的主题,其中的信息可能已经有所发展或是发生改变。

    根本需求:需要对函数设定执行时间,如果这个函数超时,就执行另一个函数;于是我就用了 set_time_limit()

    function getInfo($url){
        set_time_limit(20);
        //
        $params = "$url";
        $path='python D:\Desktop\test.py ';
        passthru($path.$params,$return_var);
    }
    

    但是这玩意超时报个致命错误 Fatal error,查了一下. ,致命错误好像不怎么好捕捉和处理

    所以各位大佬有什么异常处理这种错误的方法,或者换一种实现设定函数执行时间的方法吗??

    第 1 条附言  ·  43 天前
    曲线救国,我在 pyhton 里加了 timeout
    11 回复  |  直到 2019-12-07 15:00:15 +08:00
    jenschen
        1
    jenschen   43 天前 via iPhone
    php 的异常补货😂,参考一下 set_error_handler。赶紧转型 java 吧
    jenschen
        2
    jenschen   43 天前 via iPhone
    @jenschen 不行,你再去试试这个 set_exception_handler... 唉
    des
        3
    des   43 天前 via Android
    set_time_limit ?
    看看能不能用其他方法吧
    你这是在请求 url ?为啥不用 curl 库?
    wangkun025
        4
    wangkun025   43 天前
    死给他们看
    chinvo
        5
    chinvo   43 天前 via iPhone
    set_time_limit 是限制当前进程的执行时间,当然会 fatal error
    jenschen
        6
    jenschen   43 天前 via iPhone
    真心不喜欢 php 的错误处理,乱七八糟

    认真测试了一下。利用 register_shutdown_function。可以参考官方文档下的第一条评论。16 年前...

    <?php

    function err_handler(){
    echo "err_handler";
    }

    function exception_handler(){
    echo "exception_handler";
    }

    function shutdown_handler(){
    echo "register_shutdown_function\n";

    print_r(error_get_last());
    }


    set_error_handler("err_handler");
    set_error_handler("exception_handler");
    register_shutdown_function("shutdown_handler");

    $res = set_time_limit(5);
    try{
    while(true){

    }
    }catch(Exception $e){

    }

    ?>
    lysS
        7
    lysS   43 天前 via Android
    @des 爬东西。。
    lysS
        8
    lysS   43 天前 via Android
    @jenschen 谢谢啊,喔仔细看一下
    lysS
        9
    lysS   43 天前
    @jenschen ''PHP 异常处理中 可以通过 set_error_handler 来捕获. 但是却只能捕获 NOTICE/WARNING 级别的错误, 对于 E_ERROR 是无能为力的.''
    CODEWEA
        10
    CODEWEA   43 天前
    php7 Throwable
    CODEWEA
        11
    CODEWEA   43 天前
    你应该去捕获错误,而不是异常
    ```php

    try {
    eee();
    } catch (Error $errorException) {
    echo 'error:'.$errorException->getMessage();
    }
    //error:Call to undefined function eee()
    ```
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2571 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 41ms · UTC 13:07 · PVG 21:07 · LAX 05:07 · JFK 08:07
    ♥ Do have faith in what you're doing.