Php Zend Imap连接超时

Php Zend Imap连接超时,php,zend-framework,imap,Php,Zend Framework,Imap,我使用Zend framework提供的IMAP类通过IMAP访问gmail消息。我逐个访问收件箱中所有邮件的邮件标题,并在本地为它们编制索引。该脚本适用于邮件数小于10000的收件箱。对于较大的收件箱,脚本会断开连接,可能是超时 以下是堆栈跟踪: 异常消息:无法读取-连接已关闭 跟踪: 0/home/dev/trunk/Zend/Mail/Protocol/Imap.php168:Zend\u Mail\u Protocol\u Imap->\u nextLine 1/home/dev/tru

我使用Zend framework提供的IMAP类通过IMAP访问gmail消息。我逐个访问收件箱中所有邮件的邮件标题,并在本地为它们编制索引。该脚本适用于邮件数小于10000的收件箱。对于较大的收件箱,脚本会断开连接,可能是超时

以下是堆栈跟踪:

异常消息:无法读取-连接已关闭

跟踪:

0/home/dev/trunk/Zend/Mail/Protocol/Imap.php168:Zend\u Mail\u Protocol\u Imap->\u nextLine 1/home/dev/trunk/Zend/Mail/Protocol/Imap.php285:Zend\u Mail\u Protocol\u Imap->\u nexttagedlinenull 2/home/dev/trunk/Zend/Mail/Protocol/Imap.php587:Zend_-Mail_-Protocol_-Imap->readLineNULL,“TAG103” 3/home/dev/trunk/Zend/Mail/Storage/Imap.php353:Zend_-Mail_-Protocol_-Imap->fetch'UID',12267 4/home/dev/trunk/model/gmail\u imap\u oauth.class.php121:Zend\u Mail\u Storage\u imap->getUniqueId12267

有没有一种可能的方法可以让连接保持更长的持续时间?我正在通过命令行运行这个脚本,并尝试在php.ini中增加脚本max runtime,但没有任何帮助。

这里是函数

公共函数IndexAllMail$startIndex=1 {


}

我正在检查zend库文件Imap.php,它使用fsockopen连接到Imap服务器。可能是某个连接的超时限制。这里的代码,在创建对象后,调用IndexAllMail开始抓取。这是一个服务器端断开ie与gmail的连接,大约在连接完成后45分钟内发生。我尝试过通过java和python库,它们的行为都是一样的,所以这肯定不是客户机的问题。问题是,若我在断开连接后立即重新连接,gmail会在10秒内再次断开连接。如果我在10分钟内再次尝试重新连接,在接下来的45分钟内效果良好。我必须想办法加快从gmail获取邮件的速度,并在45分钟内完成!正在寻找C库吗
$this->_imap = new Zend_Mail_Protocol_Imap('imap.gmail.com', '993', true);
$authenticateParams = array('XOAUTH', $initClientRequestEncoded);
$this->_imap->requestAndResponse('AUTHENTICATE', $authenticateParams);

//Create the mail storage Object
$this->_storage = new Zend_Mail_Storage_Imap_Wrapper($this->_imap);

//Select Folder
$this->_storage->selectFolder("[Gmail]/All Mail");


$numMessagesTotal = $this->_storage->countMessages();
if($numMessagesTotal == 0 ) return true;

for($i=$startIndex;$i<=$numMessagesTotal;$i++)
{
  try {
    $uniqueId = $this->_storage->getUniqueId($i);
    $message = $this->_storage->getMessage($i);
  }
  catch(Exception $ex)
  {
      log("Error getting Unique id",'index');
      log($ex->getMessage(),'index');
      log($ex->getTraceAsString(),'index');

      if($ex->getMessage() == 'cannot read - connection closed?')
      {
          //Timeout :(
          return true;
      }
      else
        continue;
  }

  $from = $message->from;
  echo $from;
}