imap_open()返回什么样的数据。

问题描述 投票:0回答:1

我的CRM中有一个邮箱选项,在邮箱中一切都很好,PHP IMAP函数获取数据需要很多时间,最初每个请求需要57秒,我已经记录了每个IMAP函数的加载时间日志,其中imap_open()函数需要16秒,之后我对每个控制器只使用一个imap_open()函数,如果我使用另一个控制器,我需要再次使用imap_open()函数,那么它将需要同样的时间。所以我决定用imap_open()函数的返回值来存储一个会话值,并在每个imap函数中传递返回流参数,而不是imap_open()函数的返回流,但这并不能很好地工作,因为imap_open()函数的返回值是'资源id #61',如果我把这个值传递给imap流参数,就不能检索我的imap函数。

现在,我需要一个帮助,如何获得imap_open()函数的准确流值。

<?php  
    $start_time = date('H:i:s');  
    $data['per_page'] = 50; //$this->config->item("per_page");
    $data['start'] =  1;
    $data['default_email'] = $this->input->post('email_id');
    $email_details = $this->Mailbox_model->email_by_id($data['default_email']);

    $imap_host  = $email_details->smtp_host.':993'; // IMAP host address
    $imap_flags = "/imap/ssl/novalidate-cert"; // IMAP Flags
    $imap_user  = $email_details->email_ID; // IMAP username
    $imap_pass  = decryptthis($email_details->password, 'Rajexim2020'); // IMAP password
    $ima_time_1s = date('H:i:s');
    $imap_open_start = date('H:i:s');
    if ($email_details->imap_stream == '') {
      $inbox = @imap_open("{".$imap_host.$imap_flags."}INBOX", $imap_user, $imap_pass)or die('Cannot connect to Gmail: ' . imap_last_error());
      $update_stream_to_db = $this->Mailbox_model->update_stream_to_db($email_details->email_detail_id,$inbox);
    }
    else {
      $inbox = $email_details->imap_stream;
    }



    $imap_open_end = date('H:i:s');
    $data['tot_mail_list_count'] = imap_all_inbox_mail_count($inbox);

?>
php email imap imap-open
1个回答
1
投票

imap打开函数返回一个资源的句柄。这个资源不能被显示或可视化,这就是为什么你看到'资源id #61'。请看 https:/www.php.netmanualenlanguage.types.resource.php 获取更多关于资源的信息。

为了让传来的imap流工作,你需要重新打开该流,这可以通过调用imap_reopen函数来完成。

请看 https:/www.php.netmanualenfunction.imap-open.php 了解更多关于imap-reopen功能的信息。

© www.soinside.com 2019 - 2024. All rights reserved.