Drupal专业开发指南 第23章 渐进式和激进式(Nonprogressive)批处理集
渐进式批处理集就是一个普通的批处理集,它使用一个进度指示器向用户提供反馈。然而,当时想通过drupal_execute()来使用程序提交表单时,你应该不需要渐进式批处理集。所以,在这种情况下,表单API认出这是由程序提交的表单,并将批处理集设置为激进式。激进式批处理集将在单个请求中执行所有的操作。渐进式和激进式批处理集的设置,如图23-6所示。
渐进式批处理集就是一个普通的批处理集,它使用一个进度指示器向用户提供反馈。然而,当时想通过drupal_execute()来使用程序提交表单时,你应该不需要渐进式批处理集。所以,在这种情况下,表单API认出这是由程序提交的表单,并将批处理集设置为激进式。激进式批处理集将在单个请求中执行所有的操作。渐进式和激进式批处理集的设置,如图23-6所示。
错误处理
导入了用户以后,那么将会调用importusers_optimize()。最后,当该操作也完成后,那么将会调用我们在finished键中指定的回调(importusers_finished())。下面是importusers_import()函数:
我们在前面提到,一组处理又被称为一个批处理集。批处理API可以处理多个批处理集,而无须混合它们。可以按照先后顺序来处理多个批处理集,同时为每个批处理集使用一个新的进度指示器。
使用批处理API
设置Drupal变量
我们的第一个自定义安装任务为用户显示了一个交互式的表单。现在让我们定义该表单。我们可以使用标准的表单API,但是在这里需要仔细一点,我们把$form['#redirect']设置为FALSE,把表单的动作设为安装器提供的URL。表单的处理由一个提交处理器负责,这和普通的表单一样。下面是表单定义和提交处理器。表单如图23-4所示。
在安装的profile阶段,将运行我们在university_profile_task_list()中指定的任务。在该阶段期间,安装器将重复的调用university_profile_tasks(),并向其传递参数$task和$url,其中$task变量包含了任务名字,而$url则是一个在表单函数中可能用到的URL。安装器初次调用它时,$task将包含字符串profile。