【问题标题】:Ways to improve Gmail API speed (PHP)提高 Gmail API 速度的方法 (PHP)
【发布时间】: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


    【解决方案1】:

    可以尝试超过 10 的限制(尝试 20)?使用多个线程绝对是获得最高性能的方法,但显然有一些额外的复杂性(比如说 1 个线程执行 list() 并将 msg-ids 放入队列中,然后 4 个线程读取该队列并执行批处理 get() )。

    无论您做什么,如果您试图最大化吞吐量,请确保您处理好 429(超出速率限制)错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-21
      • 2011-07-21
      • 1970-01-01
      • 2019-06-17
      • 2021-12-14
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      相关资源
      最近更新 更多