Coroutine::getBackTrace
最后更新于:2022-04-02 06:25:59
# Coroutine::getBackTrace
[TOC]
获取协程函数调用栈。
~~~
function Coroutine::getBackTrace(int $cid=0, int $options=DEBUG_BACKTRACE_PROVIDE_OBJECT, int $limit=0) : array;
~~~
> 需要`4.1.0`或更高版本
## 参数
* `$cid`协程的`ID`,默认为当前协程
* `$options`设置选项
* `DEBUG_BACKTRACE_PROVIDE_OBJECT`: 是否填充`object`的索引
* `DEBUG_BACKTRACE_IGNORE_ARGS`: 是否忽略`args`的索引,包括所有的`function/method`的参数,能够节省内存开销
* `$limit`限制返回堆栈帧的数量
## 返回值
* 指定的协程不存在,将返回`false`
* 成功返回数组,格式与[debug\_backtrace](http://php.net/manual/zh/function.debug-backtrace.php)函数返回值相同
## 使用实例
~~~
function test1() {
test2();
}
function test2() {
while(true) {
co::sleep(10);
echo __FUNCTION__." \n";
}
}
$cid = go(function () {
test1();
});
go(function () use ($cid) {
while(true) {
echo "BackTrace[$cid]:\n-----------------------------------------------\n";
//返回数组,需要自行格式化输出
var_dump(co::getBackTrace($cid))."\n";
co::sleep(3);
}
});
~~~
';