wordpress - WordPress - “WP 后台处理”的停止进程
问题描述
我正在使用 WP 后台处理https://github.com/deliciousbrains/wp-background-processing创建一个将一些文件移动到另一台服务器的后台进程。
一切正常,我可以选择文件,将主题添加到队列中并开始移动。一切都很好,但是一旦开始这个过程,我就无法停止它。我希望能够停止后台进程,以防我在文件传输过程中改变主意。
我创建了一个调用这个 php 函数的 ajax 函数。
function me_stop_moving_files(){
global $wpdb;
$sql = "SELECT `option_name` AS `name`, `option_value` AS `value`
FROM $wpdb->options
WHERE `option_name` LIKE %s
ORDER BY `option_name`";
$wild = '%';
$find = 'wp_example_process';
$like = $wild . $wpdb->esc_like( $find ) . $wild;
$results = $wpdb->get_results( $wpdb->prepare($sql,$like) );
foreach ( $results as $result ){
delete_option($result->name);
}
$this->process_all->cancel_process();
wp_clear_scheduled_hook('wp_example_process_cron');
die('completed');
}
其中cancel_process() 是wp-background-process.php 类的一个方法。乍一看,该过程似乎已停止,但迟早会再次开始。
有没有人对这个图书馆有任何经验并且可以指出我正确的方向?
解决方案
我以前没有使用过这个库,但是查看代码,似乎可以通过调用类方法来取消进程,如下所示:
function me_stop_moving_files(){
global $wpdb;
$sql = "SELECT `option_name` AS `name`, `option_value` AS `value`
FROM $wpdb->options
WHERE `option_name` LIKE %s
ORDER BY `option_name`";
$wild = '%';
$find = 'wp_example_process';
$like = $wild . $wpdb->esc_like( $find ) . $wild;
$results = $wpdb->get_results( $wpdb->prepare($sql,$like) );
foreach ( $results as $result ){
delete_option($result->name);
}
$WP_Background_Process = new WP_Background_Process();
$Cancel_process = $WP_Background_Process->cancel_process();
die('completed');
}
推荐阅读
- android - 具有不同枢轴的 ImageView 旋转
- ruby-on-rails - mongoid 相当于加载?
- django - 如何根据 django 模板中的字段值显示排名?
- php - 我尝试更新我 laragon 中的 php,但我得到了这个
- java - BearerTokenAccessDeniedHandler 类定义 未找到
- regex - 匹配第一个实例的正则表达式
- python - Windows:Numpy mkl_intel_thread.dll
- r - 仅当打印输入变量时,闪亮的反应式才有效
- javascript - 有什么方法/工作库可以将我的 React 表导出到可下载的 excel 表(xls 或 xlsx,csv 不起作用) - React
- android - 有什么方法可以根据 Android 中 RecyclerView 的项目文本长度为每一行设置不同的“spanCount”