帮酷LOGO
  • 显示原文与译文双语对照的内容
WordPress background processing class

  • 源代码名称:wp-background-processing
  • 源代码网址:http://www.github.com/A5hleyRich/wp-background-processing
  • wp-background-processing源代码文档
  • wp-background-processing源代码下载
  • Git URL:
    git://www.github.com/A5hleyRich/wp-background-processing.git
  • Git Clone代码到本地:
    git clone http://www.github.com/A5hleyRich/wp-background-processing
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/A5hleyRich/wp-background-processing
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • 后台处理

    可以使用WP后台处理来触发非阻塞异步请求或者作为后台处理工具,从而允许你对任务进行排队。 查看示例插件插件,或者阅读附带的文章。

    激发 TechCrunch WP异步任务。

    需要 PHP 5.2 +

    异步请求

    异步请求对于推迟慢一项任务非常有用,比如将电子邮件发送到后台进程。 一旦请求被发送,它将立即在后台处理。

    扩展 WP_Async_Request 类:

    classWP_Example_RequestextendsWP_Async_Request {/** * @var string*/protected$action='example_request';/** * Handle * * Override this method to perform any actions required * during the async request.*/protectedfunctionhandle() {// Actions to perform }}
    protected $action

    应设置为唯一名称。

    protected function handle()

    应包含在非阻塞请求期间执行的任何逻辑。 传递给请求的数据将通过 $_POST 访问。

    调度请求

    实例化你的请求:

    $this->example_request = new WP_Example_Request();

    如果需要,向请求添加数据:

    $this->example_request->data( array( 'value1' => $value1, 'value2' => $value2 ) );

    关闭请求:

    $this->example_request->dispatch();

    还支持链接:

    $this->example_request->data( array( 'data' => $data ) )->dispatch();

    后台进程

    后台进程以类似于异步请求的方式工作,但它们允许你对任务进行排队。 已经调度队列后,将在后台处理推送到队列中的项。 队列还将基于可用的服务器资源进行扩展,因此更高的端服务器将在每批处理更多的项目。 一批完成后,下一批将立即开始。

    每个 5分钟默认运行运行状况检查以确保队列存在时队列正在运行。 如果队列失败,将重新启动。

    队列首先在第一个基础上工作,即使它已经经处理,也允许将它的他项推送到队列。

    扩展 WP_Background_Process 类:

    classWP_Example_ProcessextendsWP_Background_Process {/** * @var string*/protected$action='example_process';/** * Task * * Override this method to perform any actions required on each * queue item. Return the modified item for further processing * in the next pass through. Or, return false to remove the * item from the queue. * * @param mixed $item Queue item to iterate over * * @return mixed*/protectedfunctiontask( $item ) {// Actions to performreturnfalse; }/** * Complete * * Override if applicable, but ensure that the below actions are * performed, or, call parent::complete().*/protectedfunctioncomplete() {parent::complete();// Show notice to user or perform some other arbitrary task... }}
    protected $action

    应设置为唯一名称。

    protected function task( $item )

    应包含对排队项目执行的任何逻辑。 返回 false 从队列中移除项或者返回 $item 将它的推回队列以便进一步处理。 如果项已经被修改并将它的推回队列,则在批处理退出之前将保存当前状态。

    protected function complete()

    可以选择包含在队列完成后执行的任何逻辑。

    调度过程

    实例化你的进程:

    $this->example_process = new WP_Example_Process();

    将项目推送到队列:

    foreach ( $itemsas$item ) {$this->example_process->push_to_queue( $item );}

    保存并调度队列:

    $this->example_process->save()->dispatch();

    BasicAuth

    如果站点位于BasicAuth之后,则异步请求和后台进程都将无法完成。 这是因为后台处理依赖于 WordPress,这要求你将BasicAuth凭据附加到请求。 执行这里操作的最简单方法是使用以下过滤器:

    functionwpbp_http_request_args( $r, $url ) {$r['headers']['Authorization'] ='Basic '.base64_encode( USERNAME.':'.PASSWORD );return$r;}add_filter( 'http_request_args', 'wpbp_http_request_args', 10, 2);

    许可证

    GPLv2+




    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语