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

2019-12-07 11:43:55 +08:00
 lysS

根本需求:需要对函数设定执行时间,如果这个函数超时,就执行另一个函数;于是我就用了 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,查了一下. ,致命错误好像不怎么好捕捉和处理

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

1883 次点击
所在节点    问与答
11 条回复
jenschen
2019-12-07 12:04:31 +08:00
php 的异常补货😂,参考一下 set_error_handler。赶紧转型 java 吧
jenschen
2019-12-07 12:09:48 +08:00
@jenschen 不行,你再去试试这个 set_exception_handler... 唉
des
2019-12-07 12:43:25 +08:00
set_time_limit ?
看看能不能用其他方法吧
你这是在请求 url ?为啥不用 curl 库?
wangkun025
2019-12-07 12:44:46 +08:00
死给他们看
chinvo
2019-12-07 12:55:00 +08:00
set_time_limit 是限制当前进程的执行时间,当然会 fatal error
jenschen
2019-12-07 13:35:36 +08:00
真心不喜欢 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
2019-12-07 13:56:04 +08:00
@des 爬东西。。
lysS
2019-12-07 13:56:55 +08:00
@jenschen 谢谢啊,喔仔细看一下
lysS
2019-12-07 14:24:11 +08:00
@jenschen ''PHP 异常处理中 可以通过 set_error_handler 来捕获. 但是却只能捕获 NOTICE/WARNING 级别的错误, 对于 E_ERROR 是无能为力的.''
CODEWEA
2019-12-07 14:53:46 +08:00
php7 Throwable
CODEWEA
2019-12-07 15:00:15 +08:00
你应该去捕获错误,而不是异常
```php

try {
eee();
} catch (Error $errorException) {
echo 'error:'.$errorException->getMessage();
}
//error:Call to undefined function eee()
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/626749

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX