使用Cron运行提要导入器时,导入器超时导致导入不完整。我试图使用脚本来执行导入器,我遇到过几次这样的代码:
<?php
function MODULE_NAME_cron() {
$name = 'FEED_NAME';
$source = feeds_source($name);
$source->import();
}
?>
然而,当执行这个,我得到一个错误说没有feeds_source()函数,这让我相信,我只是不知道在哪里放这段代码(一个单独的php文件只是不适合我)。有人能帮我一下吗?提前感谢!
我认为你需要调用$source->startImport();
方法而不是$source->import();
我刚刚在这里发布了一个类似问题的答案:https://drupal.stackexchange.com/questions/90062/programmatically-execute-feed-import/153434#153434,这可能会有所帮助。简而言之,如果你使用批处理api,在表单中提交钩子,如果你在非浏览器中做,不要使用批处理api(安装钩子,安装配置文件)
所以在你的情况下
function load_data(){
// Files to import in specific order.
$files = array(
'challenge_importer' => 'data/challenges.csv',
);
$file_location_base = drupal_get_path('module', 'challenge');
foreach ($files as $feed => $file) {
$feedSource = feeds_source($feed);
// Set the file name to import
$filename = $file_location_base.'/' . $file;
if (!file_destination($filename, FILE_EXISTS_ERROR)) {
$config = $feedSource->getConfig();
$config['FeedsFileFetcher']['source'] = $filename;
$feedSource->setConfig($config);
$feedSource->save();
while (FEEDS_BATCH_COMPLETE != $feedSource->import());
}
}
}
可以从cron调用,或者使用从提要导入器