dimadin/backdrop

Backdrop

1.0.0 2018-09-14 15:45 UTC

This package is auto-updated.

Last update: 2024-09-16 08:00:59 UTC


README

Build Status Latest Stable Version

Backdrop 是一个简单的库,它只做一件事:允许你在后台运行一次性任务。

如何使用

Backdrop 可作为 Composer 包使用,可以在您的项目中使用。

composer require dimadin/backdrop

或者,您可以从 /inc 目录下载所有文件并将其包含在您的项目中。在两种情况下,您都需要通过 Main::init() 注册它,而不是在 admin_init 钩子之后。

在这个例子中,我们创建一个任务(如果选项不存在),向其中传递参数,然后安排它,同时挂钩 Backdrop 的初始化。

function my_awesome_function( $id ) {
	// Download initial data to my site. Might take a long time!
	$data = wp_remote_get( 'http://example.com/' . $id );

	if ( is_wp_error( $data ) ) {
		return $data;
	}

	update_option( 'initial_data', $data );
}

add_action( 'init', function () {
	if ( ! get_option( 'initial_data' ) ) {
		$task = new \dimadin\WP\Library\Backdrop\Task( 'my_awesome_function', get_current_user_id() );
		$task->schedule();
	}
} );

add_action( 'admin_init', [ '\dimadin\WP\Library\Backdrop\Main', 'init' ] );

API

完整的代码参考可在此处找到:http://api.milandinic.com/backdrop/

Task::__construct( $callback [, $...] )

创建一个新任务将设置任务的所有内部数据。传递您的回调函数以及您想传递给函数的任何参数,Backdrop 将在后台进程调用它。

参数

  • $callback: 您想使用的回调方法。可以是任何可调用的类型(包括对象方法和静态方法),但不能是匿名函数(除了匿名函数)。闭包无法序列化,因此不能用于 Backdrop 回调。这是 PHP 的内部限制。
  • $...: 您想传递给回调的任何其他参数,作为可变参数。例如,new Task( 'a', 'b', 'c', 'd' ) 映射到 a( 'b', 'c', 'd' )

返回值

无(构造函数)。

Task::schedule()

安排任务运行。通常在页面渲染后,在单独的进程中运行。

Backdrop 根据传入的参数去重任务。例如,您可以在每次请求时都做 new Task( 'myfunc', 1 ),但只会运行一个。在此运行之后,下一次调用将重新安排。

为了避免这种情况,您应该根据需要传递唯一的标识符。使您的任务独特的一切都应传递并用于您的函数,因为全局状态可能会改变。

参数

无。

返回值

可以是 true,或者在失败时返回一个 WP_Error。错误对象将指示错误类型;通常这是 md_backdrop_scheduled,如果任务已被安排运行或正在运行。

Task::is_scheduled()

检查您的任务是否已安排运行。

参数

无。

返回值

布尔值,指示您的任务是否已安排运行或正在运行。

Task::cancel()

取消先前安排的任务。

请注意,如果任务正在运行,这将不会取消执行;它只是从计划运行的任务中删除它。

参数

无。

返回值

可以是 true,或者在失败时返回一个 WP_Error。错误对象将指示错误类型;通常这是 md_backdrop_not_scheduled,如果任务尚未安排。

Main::init()

注册 Backdrop。

参数

无。

返回值

无。

兼容性

Backdrop 与 PHP 5.4 及以上版本兼容。

许可

Backdrop 在 GPL 版本 2 许可下发布。

版权所有 2014 Human Made Limited,2015-2018 Milan Dinić