使用Cron运行Feed导入程序时,导入程序会超时,导致导入不完整。我尝试使用脚本来执行导入程序,并且我已经多次遇到过此代码:
<?php
function MODULE_NAME_cron() {
$name = 'FEED_NAME';
$source = feeds_source($name);
$source->import();
}
?>
然而,当执行此操作时,我收到一条错误消息,说没有feed_source()函数,这让我相信我只是不知道在哪里放这个代码(一个单独的php文件就是不是& #39;为我工作)。有人可以帮我从这里出去吗?提前谢谢!
答案 0 :(得分:0)
我认为您需要调用$source->startImport();
方法而不是$source->import();
答案 1 :(得分:0)
我刚刚在这里发布了一个类似问题的答案:https://drupal.stackexchange.com/questions/90062/programmatically-execute-feed-import/153434#153434,这可能有所帮助。简而言之,如果您使用批处理api,则在表单提交挂钩中,或者如果您正在使用批处理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调用,或者使用feed导入程序的计划执行