You are here

第7章 Batch API(批处理)

admin 的头像
Submitted by admin on 星期五, 2015-09-18 06:44

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

我们做开发的时候,经常会遇到批量处理数据的情况,如果一次处理10条或者上百条数据,我们一次性的处理完成就可以了。当需要处理上千条、上万条的数据时,我们不可能把所有的数据,一股脑的都加载进来,逐一处理,这是行不通的,很容易就超出了PHP的各种限制,比如内存限制、执行时间的限制。这个时候,就需要批处理这种方式,Drupal提供了一套批处理API,方便我们做这件事情。

什么是批处理呢?批处理,顾名思义,就是一批一批的处理,假如有一万条数据需要处理,我们一批处理20条,当处理完这20条后,批处理API会再次发送一个HTTP请求,系统接着处理下面的20条,处理完以后,再发送HTTP请求,这样循环下去,直到这一万条数据处理完为止。注意,这里发送的HTTP 请求,是由Drupal自动完成的,在我们看起来,Drupal一次性的把所有的数据都处理了,实际后台方面,Drupal是把这些数据分成若干批分别处理。

什么地方用到了批处理?Drupal里面使用批处理的地方太多了,比如我们安装Drupal的时候,模块的安装,使用的就是批处理,这个是我们再熟悉不过的了。我们使用Apachesolr的时候,当需要重建所有索引的时候,而数据量又比较大,这个时候就可以使用批处理进行索引。批量修改特定字段的值时,如果涉及到的实体数量比较大时,也需要使用批处理。Feeds模块,使用单独表单提交后,导入数据时,用的就是批处理。Drupal系统中,用到的地方还有很多。


Drupal版本: