以编程方式公开Laravel任务并为不同目的“重复使用”

时间:2017-08-31 21:40:33

标签: php laravel

我正在尝试在任务时间表中定义一些“待办事项/运行”(也就是命令?)。
所以我可能有一个Command伪装称为PushNotificationJob,另一个Command叫做WriteToLogFileJob等。
我想在我的管理GUI中公开这些,以便我可以添加BatchProcess 因此,想象一下Laravel CMS页面中的一个按钮,其中显示“添加批处理过程”,并在该页面中收集新批处理过程的信息:

  1. 要运行的任务/作业(假装当前定义的下拉列表 任务:PushNotificationJob和WriteToLogFileJob)
  2. 何时运行它(cron string)
  3. 要发送到该任务/作业的键/值参数。
  4. 现在假装我在该页面上定义了一个名为“向用户发送应用更新通知”的BatchProcess,它使用PushNotificationJob任务(发送参数: ​​- message ='嘿$ name,更新你的应用!'和--priority =应该每天运行的“高”。 另一个名为“向用户发送简报”的BatchProcess,如果可能的话也使用相同的PushNotificationJob任务(发送参数:--message ='嘿$ name,登录我们的应用程序以查看最新的时事通讯!'和--priority ='正常')每两周运行一次。实际上params和time是唯一不同的东西,Task本身仍然是相同的,它向用户发送带有该优先级的消息参数的推送通知。

    这一切都可行吗? 我已经看到了一些方法将所有当前任务暴露给UI。 也许你也可以看到一种方法可以为一个任务设置一个cron字符串...但这似乎重用了相同的任务,所以它不能通过不同的cron字符串以不同的方式使'多个工作重用相同的任务'/ PARAMS。

    这是迄今为止我可能将任务暴露给用户界面的最多信息:

    laravel add scheduler dynamically

    LARAVEL: Get an array of scheduled tasks for output in admin dashboard

    如果可以实现,请在下面告诉我们。

1 个答案:

答案 0 :(得分:0)

根据其他帖子创建了一种方法: https://github.com/armyofda12mnkeys/laravel-task-gui-linkage(主分公司) 所以首先要创建一些命令......这些命令的选项/参数应该在你的Command类中预先定义(这有点限制了你可以通过GUI动态发送多少和哪些精确的args)。

然后在您的GUI中,键入任务的名称(或通过数据库或硬编码将值形成值的链接到下拉列表)并设置一个时间(cron或关键字,如每小时)和params以发送给它。

然后Kernel.php可以根据我看到的其他代码动态注册它们。