mirror of
https://gitee.com/hyperf/hyperf.git
synced 2024-12-05 05:07:58 +08:00
1.7 KiB
1.7 KiB
輔助類
Hyperf 提供了大量便捷的輔助類,這裏會列出一些常用的好用的,不會列舉所有,可自行查看 hyperf/utils 組件的代碼獲得更多信息。
協程輔助類
Hyperf\Utils\Coroutine
該輔助類用於協助進行協程相關的判斷或操作。
id(): int
通過靜態方法 id()
獲得當前所處的 協程 ID
,如當前不處於協程環境下,則返回 -1
。
create(callable $callable): int
通過靜態方法 create(callable $callable)
可創建一個協程,還可以通過全局函數 co(callable $callable)
或 go(callable $callable)
達到同樣的目的,該方法是對 Swoole
創建協程方法的一個封裝,區別在於不會拋出未捕獲的異常,未捕獲的異常會通過 Hyperf\Contract\StdoutLoggerInterface
以 warning
等級輸出。
inCoroutine(): bool
通過靜態方法 inCoroutine()
判斷當前是否處於協程環境下。
Hyperf\Utils\Context
用於處理協程上下文,本質上是對 Swoole\Coroutine::getContext()
方法的一個封裝,但區別在於這裏兼容了非協程環境下的運行。
Hyperf\Utils\Coordinator\CoordinatorManager
該輔助類用於指揮協程等待事件發生。
<?php
use Hyperf\Utils\Coordinator\CoordinatorManager;
use Hyperf\Utils\Coordinator\Constants;
use Hyperf\Utils\Coroutine;
Coroutine::create(function() {
// 所有OnWorkerStart事件回調完成後喚醒
CoordinatorManager::until(Constants::WORKER_START)->yield();
echo 'worker started';
// 分配資源
// 所有OnWorkerExit事件回調完成後喚醒
CoordinatorManager::until(Constants::WORKER_EXIT)->yield();
echo 'worker exited';
// 回收資源
});