INI 设置

TrueAsync 扩展向 php.ini 添加以下指令。

指令列表

指令 默认值 作用域 描述
async.debug_deadlock 1 PHP_INI_ALL 启用死锁检测时的诊断报告输出

async.debug_deadlock

类型: bool 默认值: 1(启用) 作用域: PHP_INI_ALL — 可在 php.ini.htaccess.user.ini 中修改,也可通过 ini_set() 修改。

启用后,当调度器检测到死锁时,此指令会激活详细的诊断输出。 如果调度器发现所有协程都被阻塞且没有活跃事件,它会在抛出 Async\DeadlockError 之前输出报告。

报告内容

输出示例

=== DEADLOCK REPORT START ===
Coroutines waiting: 2, active_events: 0

Coroutine 1
  spawn: /app/server.php:15
  suspend: /app/server.php:22
  waiting for:
    - Channel recv (capacity: 0, senders: 0, receivers: 1)

Coroutine 2
  spawn: /app/server.php:28
  suspend: /app/server.php:35
  waiting for:
    - Channel recv (capacity: 0, senders: 0, receivers: 1)

=== DEADLOCK REPORT END ===

Fatal error: Uncaught Async\DeadlockError: ...

示例

通过 php.ini 禁用

async.debug_deadlock = 0

通过 ini_set() 禁用

<?php
// 在运行时禁用死锁诊断
ini_set('async.debug_deadlock', '0');
?>

为测试禁用

; phpunit.xml 或 .phpt 文件
async.debug_deadlock=0

参见