四月 2015

使用Drupal的Batch API

最近我在做一个图书馆网站,这个网站有很多数据需要导入到Drupal并转换为Node。书籍标题、电子书、DVD等都需要进行导入;不仅如此,还有一个外部数据库需要进行同步的新增,以及少量的修改和删除工作。估计有30到40万Node需要创建,并且需要同他们的内部数据库进行同步。在本文中,我会大致描述一下我如何使用Drush结合Batch API,在控制台中导入这些数据。

引入数据

我的第一个挑战是把数据导入到Drupal中。这其中包含大量数据,所以我需要使用batch API。Batch API让你可以在无需担心PHP超时的情况下,运行一个或多个方法来操作大量数据,并提供相应的进度指示。我创建了一个模块来处理图书馆数据的更新和导入。要创建这个批处理队列,首先要给batch_set()建立一个数组: