zenaton / zenaton-laravel
轻松在 Laravel 应用中使用 Zenaton 进行后台任务
Requires
- php: >=5.6
- illuminate/support: ^5.5|^6.0
- zenaton/zenaton-php: ^0.6
This package is auto-updated.
Last update: 2020-07-28 14:57:14 UTC
README
⚠️ 此仓库已废弃。
开发人员使用的简单异步任务管理器
探索文档
网站 · PHP 示例 · PHP 教程
Zenaton for Laravel
Zenaton 帮助开发人员轻松运行、监控和编排工作者的后台任务,无需管理排队系统。此外,监控仪表板可以实时显示任务执行情况,并帮助您处理错误。
Zenaton Laravel 包允许您使用 Zenaton 平台在 Laravel 项目中编码和启动任务,以及以代码的形式编写工作流。您可以在 Zenaton 上注册账户,并完成 PHP 教程。
PHP 文档
您可以在 Zenaton 网站上找到所有详细信息。
入门
安装
安装 Zenaton 代理
要安装 Zenaton 代理,请运行以下命令
curl https://install.zenaton.com/ | sh
然后,您需要让代理监听您的应用程序。为此,您需要 应用程序 ID 和 API 令牌。您可以在 您的 Zenaton 账户 中找到它们。
将它们放入您的 .env
文件中
ZENATON_APP_ID=YourAppId ZENATON_API_TOKEN=YourApiToken ZENATON_APP_ENV=dev
现在,要使代理监听,请运行以下命令
zenaton listen --laravel
安装 Laravel 包
要将最新版本的包添加到您的项目中,请运行以下命令
composer require zenaton/zenaton-laravel
然后,使用以下命令发布默认配置文件
php artisan vendor:publish --tag=zenaton-config
快速入门
执行后台任务
Zenaton 中的后台任务是一个实现 Zenaton\Interfaces\TaskInterface
接口的类。
让我们先实现一个打印一些内容并返回值的第一个任务。您可以使用 zenaton:make:task
artisan 命令生成任务
php artisan zenaton:make:task HelloWorldTask
打开为您生成的 app/Zenaton/Tasks/HelloWorldTask.php
文件,并实现 ::handle()
方法,如下所示
namespace App\Zenaton\Tasks; use Zenaton\Interfaces\TaskInterface; use Zenaton\Traits\Zenatonable; class HelloWorldTask implements TaskInterface { use Zenatonable; public function handle() { echo "Hello World\n"; return mt_rand(0, 1); } }
现在,如果您想将此任务作为后台作业运行,您需要执行以下操作
(new \App\Zenaton\Tasks\HelloWorldTask())->dispatch();
这就是开始所需的所有内容。有了这个,您就可以运行许多后台作业。然而,Zenaton的真正力量在于能够编排这些作业。下一节将向您介绍作业编排。
编排后台作业
作业编排允许您以简单的方式编写复杂的企业工作流程。您可以按顺序、并行执行作业,根据先前作业的结果进行条件执行,甚至可以使用循环重复某些任务。
我们写了一些关于作业编排用例的文章,您可以查看这些文章,了解人们是如何使用作业编排的。
使用工作流程
在Zenaton中,工作流程是一个实现了Zenaton\Interfaces\WorkflowInterface
接口的类。
我们将实现一个非常简单的工作流程
首先,它将执行HelloWorld
任务。第一个任务的结果将用于通过一个if
语句制作条件。当返回值大于0
时,我们将执行名为FinalTask
的第二个任务。否则,我们不会执行其他任何操作。
需要记住的一个重要事项是,您的实现必须必须是幂等的。您可以在我们的文档中了解更多。
让我们使用相应的artisan命令生成工作流程类,以便能够对其工作
php artisan zenaton:make:workflow MyFirstWorkflow
打开为您生成的app/Zenaton/Workflows/MyFirstWorkflow.php
文件,并实现以下::handle()
方法
namespace App\Zenaton\Workflows; use Zenaton\Interfaces\WorkflowInterface; use Zenaton\Traits\Zenatonable; class MyFirstWorkflow implements WorkflowInterface { use Zenatonable; public function handle() { $n = (new HelloWorldTask())->execute(); if ($n > 0) { (new FinalTask())->execute(); } } }
现在,您的实现已经完成,您可以通过调用dispatch
方法来执行工作流程
(new \App\Zenaton\Workflows\MyFirstWorkflow())->dispatch();
如果您真的想运行此示例,您将需要实现FinalTask
任务。
工作流程中有许多其他功能可用于正确完成编排。您可以在我们的文档中了解更多。
获取帮助
需要帮助吗?请随时通过Zenaton上的聊天联系我们。