dimadin / backdrop
Requires
- php: >=5.4
- dimadin/wp-temporary: ^1.0
This package is auto-updated.
Last update: 2024-09-16 08:00:59 UTC
README
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ć