2014-11-24 36 views
0

我多次插入使用此代碼段:使用Google_Http_Batch插入多個事件

foreach ($aFile as $v) { 
    $event = new Google_Service_Calendar_Event(); 
    $event->setSummary($v[7]); 

    $start = new Google_Service_Calendar_EventDateTime(); 
    $start->setDateTime($v[0]); 
    $start->setTimeZone('Europe/London'); 
    $event->setStart($start); 

    $end = new Google_Service_Calendar_EventDateTime(); 
    $end->setDateTime($v[1]); 
    $end->setTimeZone('Europe/London'); 
    $event->setEnd($end); 

    $new_event = null; 

    try { 
     $new_event = $service->events->insert($calName, $event); 
     $new_event_id= $new_event->getId(); 
    } catch (Google_ServiceException $e) { 
     syslog(LOG_ERR, $e->getMessage()); 
    } 

    $event = $service->events->get($calName, $new_event->getId()); 

    } 
} 

事件被成功地插入,但它採取的年齡爲大組事件。通常約45秒。爲50個插入。而且,我的高速互聯網連接不是怪罪。

有沒有辦法使用Google_Http_Batch類來加速插入過程,以及如何?

回答

0

我終於找到了如何做那個批量事件上傳。更容易,我認爲:

$batch = new Google_Http_Batch($client); 

    foreach ($aEvents as $k => $v) { 
     $event = new Google_Service_Calendar_Event(); 
     $event->setSummary($v[6]); 

     $start = new Google_Service_Calendar_EventDateTime(); 
     $start->setDateTime($v[4]); 
     $start->setTimeZone('Europe/London'); 
     $event->setStart($start); 

     $end = new Google_Service_Calendar_EventDateTime(); 
     $end->setDateTime($v[5]); 
     $end->setTimeZone('Europe/London'); 
     $event->setEnd($end); 

     $new_event = null; 

     /* add event inserts in the batch spool */ 
     $req = $service->events->insert($calName, $event); 
     $batch->add($req, $k); 
    } 

    /* executing the batch and storing the results */ 
    $resultsBatch = $batch->execute(); 

$batch->execute()方法返回包含到嵌入式谷歌API響應對象的數組。