D7下的action里的$context参数里有进度信息,但是D6的$context里没有。
然后我尝试在action代码里用cookie去记录一个标识,也没用!
整个批量执行过程,记录的cookie值始终是批量执行之前的值,执行过程中,cookie被action修改后的新值,不会在action代码里被获取到。
就是说执行过程好像是一个闭合环境,在这个环境下,全局变量不会随着每次执行action而改变。
我的具体需求是:每次批量执行时,我要动态生成一个目录名用来存储每个action去生成的一个文件,生成文件的代码写到了action函数里,那么每执行一个action,就会有一个动态目录名生成,这是我不想要的,我只要生成一个固定的目录就可以了,这些文件都放到这个目录里。那么我就得想办法记下这个目录名,然后在代码里判断,如果目录名已经生成了,就不要再生成了。
请问我要如何记录下这目录名,然后能让action获取到每次更新的值呢?
我的action代码:(cookie:generate_zip_file_dir_name获取不到更新后的值)
function batch_generate_pdf_action(&$node, $context = array()) {
module_load_include('inc', 'print_pdf', 'print_pdf.pages');
// pdf文件名
$pdf_filename = variable_get('print_pdf_filename', PRINT_PDF_FILENAME_DEFAULT);
$pdf_filename = token_replace($pdf_filename, 'node', $node, TOKEN_PREFIX, TOKEN_SUFFIX, array('clear' => TRUE));
$pdf_filename = transliteration_clean_filename($pdf_filename, language_default('language'));
// 目录名
date_default_timezone_set('Asia/Shanghai');
$dir_name = date('Y-m-d_h_i_s', time());
setcookie('generate_zip_file_dir_name', $dir_name);
drupal_set_message(l('生成压缩文件包', 'generate_zip_file'));
// 目录路径
$dir_path = file_directory_path() . '/' . $dir_name;
file_check_directory($dir_path, FILE_CREATE_DIRECTORY);
$dir_path = realpath($dir_path);
// 带目录路径的pdf文件名
$pdf_filename = $dir_path . '/' . $pdf_filename . '.pdf';
// 生成pdf文件
print_pdf_generate_path($node->nid, NULL, $pdf_filename);
sleep(1); // 由于两次执行时间一般小于1s,所以为了验证区别上下文环境信息,调大执行时间间隔
}