nr/processcronjobs

管理CronJobs的执行

dev-main 2024-07-11 15:14 UTC

This package is auto-updated.

Last update: 2024-09-11 15:39:15 UTC


README

功能

该模块提供可以注册cronjobs的路径。它列出所有已注册的cronjobs,可以手动执行单个cronjobs。显示最后执行时间、最后状态,以及在出错时显示最后错误信息。

功能特性

  • 所有注册的CronJobs的清晰概述
  • 设置定时(onInit或onReady)和延迟(LazyCron)简单
  • 执行CronJobs的单独路径(端点)。为选定的CronJobs配置秘密路径段和额外的路径段(命名空间)。
  • 显示最后执行时间和任何错误信息

安装

  1. 将此模块的文件复制到 /site/modules/ProcessCronJobs/
  2. 在管理员界面:模块 > 刷新。安装 ProcessCronJobs。
  3. 转到设置 > CronJobs
  4. 将示例模块(modules/ProcessCronJobs/example/ProcessCronJobsRegistration.module.example)复制并安装到__constructor()方法中,以注册您的CronJobs。您也可以使用任何其他__constructor()方法。建议尽早注册CronJobs,以便它们也可以在onInit上执行。
  5. 设置真实cron,以调用ProcessCronJobs提供的端点。

通过composer安装

  1. 在网站根目录中执行以下命令。
    composer require nr/processcronjobs

注册CronJob

简单

注册CronJob的简单示例。

wire()->addHookBefore('ProcessCronJobs::register', function(HookEvent $event){
	/** @var ProcessCronJobs $processCronJobs */
	$processCronJobs = $event->object;
	$processCronJobs->add(
		'SuperSimpleCronJobOnDemand',
		function(CronJob $cron){ echo "Hello Cron"; },
	);
});

延迟

此CronJob应在初始化时每天运行一次。

wire()->addHookBefore('ProcessCronJobs::register', function(HookEvent $event){
	/** @var ProcessCronJobs $processCronJobs */
	$processCronJobs = $event->object;
	$processCronJobs->add(
		'MyFirstCronJobEveryDay',
		function(CronJob $cron){ echo "What a beautiful day"; },
		[
			'lazyCron' => 'LazyCron::everyDay',
			'timing' => CronJob::timingInit,
		]
	);
});

长时间运行

此CronJob运行时间非常长,并由“真实”CronJob直接调用,以免阻塞其他CronJob。此CronJob的端点是https://example.com/cron/longrunning/https://example.com/cron/###your_secret###/longrunning/

具有命名空间(自己的路径段)的CronJobs不能使用LazyCron进行延迟,因为LazyCron只能由单个请求启动。LazyCron创建一个锁文件,从而阻止并行调用的执行。

wire()->addHookBefore('ProcessCronJobs::register', function(HookEvent $event){
	/** @var ProcessCronJobs $processCronJobs */
	$processCronJobs = $event->object;
	$processCronJobs->add(
		'SuperLongRunningSpecialCronJob',
		function(CronJob $cron){ echo "I have so much work to do"; },
		[
			'timing' => CronJob::timingInit,
			'ns' => 'longrunning'
		]
	);
});

流程视图

ProcessView

配置

模块 > 配置 > ProcessCronJobs

您将在模块设置中找到以下配置选项

  • 触发路径,即触发CronJob处理的路径,可以在此进行调整(默认:cron/)。
  • 可以创建一个秘密路径段,该路径段必须附加到触发路径,以便启动处理。
  • 可以停止自动处理(状态)。
  • 可以清空ProcessCronJobs的缓存。例如,最后调用时间、最后调用状态以及可能出现的错误信息都存储在缓存中。

Configuration

CronJob对象