1 1

分享

還再使用Feeds來處理資料匯入嗎? 用外部php script做資料處理,安全又方便!


前言 資料 問題 功能 資料量

前言

是否大家都有處理過資料匯入的問題呢? 想必用過Drupal的人都知道使用Feeds這個模組,功能非常非常強。但是,如果資料量很大的狀況下,很擔心網頁匯入到一半就timeout了,在設定上面也略顯複雜。若是簡單的Drupal 網站匯入是還好,若是很複雜的資料包含一堆關聯性資料要匯入,相信你會設定到痛苦連天。因此,若可以用外部的php撰寫匯入程式,方便又不擔心寫錯造成網頁噴錯,更重要的是,所有邏輯都可以用程式來直接完成,簡單方便又有彈性,還可以搭配crontab。快來看看

讀取外部資料+寫入到網站

這裡我就用一個簡單的作法,主要會進行 1.讀取JSON資料。2.使用外部php script進行資料匯入。 D7與D8的作法稍微有些不一樣,可以再參考看看以下的範例。

Drupal 7 Version

  

/** * Root directory of Drupal installation. * Get the directory where this php is. */define('DRUPAL_ROOT', getcwd());//include all necessary increquire_once DRUPAL_ROOT . '/includes/bootstrap.inc';require_once DRUPAL_ROOT . '/includes/common.inc';require_once DRUPAL_ROOT . '/includes/module.inc';require_once DRUPAL_ROOT . '/includes/file.inc';drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);//寫一篇文章$node = entity_create('node', array('type' => 'article'));$node->uid = 1;$new_node = entity_metadata_wrapper('node', $node);$new_node->title = 'test title';$new_node->save();

Drupal 8 Version

  

define('DRUPAL_DIR', __DIR__ .'/web');use Drupal\Core\DrupalKernel;use Symfony\Component\HttpFoundation\Request;$autoloader = require_once DRUPAL_DIR . '/autoload.php';$request = Request::createFromGlobals();$kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod');$kernel->boot();require_once DRUPAL_DIR . '/core/includes/database.inc';require_once DRUPAL_DIR . '/core/includes/schema.inc';require_once DRUPAL_DIR . '/core/includes/module.inc';require_once DRUPAL_DIR . '/core/includes/entity.inc';$node = entity_create('node', array(        'type' => 'page',        'title' =>'Creating another node',        'langcode' => 'zh-hant',        'body' => array(        'value' =>'The body of the content',        'format' => 'full_html',        ),        'uid'=>1,    )  ); $node->save();

結論

用上面的作法,可以讓我們處理非常複雜的邏輯,並且可以搭配Crontab來自動化做很多資料的處理,是個非常好用且實用的作法:)
Drupal
#前言  #資料  #問題  #功能  #資料量 
分類:學習

評論
更多文章
載入中... 沒有更多了