我使用与gmail api
配合使用的google php库。我想从我的Gmail帐户中获取所有邮件。
我是怎么做到的:
do {
$this->client->setUseBatch(false);
$messagesResponse = $service->users_messages->listUsersMessages('me', compact('pageToken'));
if ($messagesResponse->getMessages()) {
$batch = new Google_Http_Batch($this->client);
$this->client->setUseBatch(true);
foreach ($messagesResponse as $item) {
$request = $service->users_messages->get('me', $item->id, ['format' => 'raw']);
$batch->add($request);
}
$messages = array_merge($messages, $batch->execute());
$pageToken = $messagesResponse->getNextPageToken();
}
} while ($pageToken);
当我从CLI运行此脚本时,出现以下错误:
[Google_IO_Exception]
操作在100000毫秒后超时,接收到57157107个字节
如果我通过检索新令牌来评论该行,那么我收到前100条消息并且它可以正常工作。但我无法取得所有这些。 PHP没有超时,这是google_io_exception,所以我不知道如何解决问题。此外,任何优化提示都会很棒,因为我唯一知道的是批量请求,但我使用它们。
答案 0 :(得分:0)
这个问题仍然有用,因为我花了很多时间才能得到一个明确的答案,我将分享我所发现的内容:
您在一次批量请求中限制为100次通话。如果您需要拨打更多电话,请使用多个批量请求。
https://developers.google.com/gmail/api/guides/
正如您所看到的,根据文档,您在一个批处理请求中不能超过100个调用。因此,您将计算并执行低于此限制。
如果你保持100个请求的限制,那么一切都应该正常工作。