omegaalfa / async-task
使用 Fibers 的 PHP 异步任务管理器
dev-main
2024-01-15 02:09 UTC
Requires
- php: >=8.1
Requires (Dev)
- phpunit/phpunit: ^9.0
This package is not auto-updated.
Last update: 2024-09-23 05:55:30 UTC
README
使用 Fibers 管理一组异步任务
描述
此存储库包含用于使用 Fibers 管理异步任务的简单代码。代码由三个类组成
- AsyncTaskManager: 管理一组异步任务。
- AsyncTask: 表示一个异步任务。
- Loop: 提供一个高级接口来创建和执行异步任务。
AsyncTaskManager
负责维护一个异步任务池。任务通过 submit()
方法添加到池中。然后 AsyncTaskManager
以合作方式在池中执行任务,直到所有任务完成。
AsyncTask
表示一个异步任务。任务通过将任务逻辑作为构造函数中的可调用对象实例化 AsyncTask
对象来创建。
Loop
提供一个更友好的创建和执行异步任务的接口,简化了任务的定义和结果的获取。
功能
- 将异步任务提交给管理器。
- 在后台执行任务,直到所有任务完成。
- 使用 Fibers 功能实现异步操作。
先决条件
PHP 8.1 或更高版本
安装
有关如何安装存储库的说明。
示例
use omegaalfa\AsyncTask\AsyncTask; use omegaalfa\AsyncTask\AsyncTaskManager // Cria uma instância do AsyncTaskManager $taskManager = new AsyncTaskManager(); // Define uma tarefa assíncrona simples $asyncTask = new AsyncTask(function () { // Código a ser executado assincronamente echo "Tarefa assíncrona concluída!\n"; }); // Submete a tarefa ao AsyncTaskManager $taskManager->submit($asyncTask); // Executa todas as tarefas em segundo plano $taskManager->run();
使用 Loop 类
//usando o Loop use omegaalfa\AsyncTask\Loop; // Cria uma instância do Loop $loop = new Loop(); // Adiciona tarefa assíncrona ao Loop $loop->defer(function () { // Código a ser executado assincronamente return "Tarefa assíncrona concluída!"; }); // Adiciona tarefa com nome ao Loop $loop->addTask('minhaTarefa', function () { // Código da tarefa com nome return "Tarefa com nome concluída!"; }); // Executa tarefas em segundo plano, aguarda até que todas sejam concluídas $loop->run(); // Obtém resultados $resultado = $loop->getResult();
贡献
如果您想为改进或修复做出贡献,请随意创建 pull request 或在存储库中打开 issue。
许可证
本项目采用 MIT 许可证。