共有四種作法,為了方便比較,第二種作法也會更新Node本身
1. 直接操作 Node 物件
2.利用entity_metadata_wrapper
3. 方法2+方法1
4. 利用entity_create+entity_metadata_wrapper
執行速度:1 ≒ 4 >> 3 ≒ 2
1:0.0106489ms
2:0.0478260ms
3:0.0379638ms
4:0.0052890ms
1大概用了4的一倍時間,3則大概用了1的3~4倍時間,2則比3多一點
跑迴圈測試後發現,1還是比較快,不過4只慢一點,但相對來說比較好開發,所以首選應該還是4
不過相對而言,2需要寫的程式碼最少,4要寫程式的最多
※ 比較基礎:只更新一個整數欄位,且該內容類型中有6個欄位
方法1:
$node = new stdClass(); $node->nid = $nid; // node id $node->type = $content_type; // content type $node->field_name[LANGUAGE_NONE][0]['value'] = $value; field_attach_update('node', $node);
方法2:
$ew = entity_metadata_wrapper('node', $nid); $ew->field_name->set($value); $ew->save();
方法3:
$ew = entity_metadata_wrapper('node', $nid); $ew->field_amont->set($value); $node=$ew->value(); field_attach_update('node', $node);
方法4:
$e = entity_create('node', array( 'nid' => $nid, 'type' => $content_type, )); $ew = entity_metadata_wrapper('node', $e); $ew->field_name->set($value); $node = $ew->value(); field_attach_update('node', $node);