【发布时间】:2015-08-23 06:07:46
【问题描述】:
我使用 Gmail API 的 PHP 包装器首先获取邮件列表,然后使用邮件 ID 获取每封邮件的一些标题信息,但我一直遇到非常不一致且速度很慢的问题。我已经在使用 Google 最佳实践页面上所述的部分响应和批量请求等内容。
下面是我使用的代码截图
$client = new Google_Client();
$service= new Google_Service_Gmail($client);
$batch = new Google_Http_Batch($client);
//Call to get mail list from or to user email, limit to 10 result
$messages = $service->users_messages->listUsersMessages('me', array('maxResults' => 10, 'q' => "from:$email OR to:$email"));
$messageList = $messages->getMessages();
//enable batch use for client
$client->setUseBatch(true);
//Loop through message list, add get mail request for each message to batch
foreach($messageList as $msg_obj){
$request = $this->service->users_messages->get('me', $msg_obj->id,array('format' => 'metadata', 'metadataHeaders' => array('date','subject','to')));
$batch->add($request, "mail-".$msg_obj->id);
}
//Call batch
$results = $batch->execute();
大多数第一次获取列表调用需要 0.7 - 1.2 秒
批处理调用大约需要 1.7 - 3 秒
尽管使用批量调用并且只从每封邮件中获取 'date'、'subject'、'to' 标头,但两次调用的时间仍然可能需要 4 秒左右,这是非常明显的,并且调用仍然非常不一致。如果不使用header的部分响应,速度就更慢了。
Gmail API 的速度是否正常?有什么方法可以进一步降低速度?
谢谢
【问题讨论】:
标签: php performance google-api gmail-api