根本需求:需要对函数设定执行时间,如果这个函数超时,就执行另一个函数;于是我就用了 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
jenschen 2019-12-07 12:04:31 +08:00 via iPhone
php 的异常补货😂,参考一下 set_error_handler。赶紧转型 java 吧
|
3
des 2019-12-07 12:43:25 +08:00 via Android
set_time_limit ?
看看能不能用其他方法吧 你这是在请求 url ?为啥不用 curl 库? |
4
wangkun025 2019-12-07 12:44:46 +08:00
死给他们看
|
5
chinvo 2019-12-07 12:55:00 +08:00 via iPhone
set_time_limit 是限制当前进程的执行时间,当然会 fatal error
|
6
jenschen 2019-12-07 13:35:36 +08:00 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){ } ?> |
9
lysS OP @jenschen ''PHP 异常处理中 可以通过 set_error_handler 来捕获. 但是却只能捕获 NOTICE/WARNING 级别的错误, 对于 E_ERROR 是无能为力的.''
|
10
CODEWEA 2019-12-07 14:53:46 +08:00
php7 Throwable
|
11
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() ``` |