我有来自php IMAP(提取电子邮件)的数百个响应,我想将所有提取的电子邮件插入数据库。问题是在服务器停留时间是40秒(主机提供商对我说),我的脚本花了超过40秒。由于提取记录和插入查询服务器返回以下错误。
[an error occurred while processing this directive]
这是Php代码
$imap = @imap_open("{mail.******.com:143/novalidate-cert}", '*****@***.com', '*****');
if(isset($imap)){
$message_count = @imap_num_msg($imap);
$array_mail = array();
if($message_count > 0){
for ($m = 1; $m <= $message_count; ++$m){
//$header = @imap_header($imap, $m);
$header = @imap_rfc822_parse_headers(imap_fetchheader($imap, $m));
$email[$m]['from'] = $header->from[0]->mailbox.'@'.$header->from[0]->host;
$from = $email[$m]['fromaddress'];
$from_email = $email[$m]['from'];
$array_mail[] = $from_email;
if(isset($header->cc)){
$hedCC = $header->cc;
foreach($hedCC as $s){
//echo $s->mailbox.'@'.$s->host.'<br />';
$array_mail[] = $s->mailbox.'@'.$s->host;
}
}
if(isset($header->to)){
$hedTO = $header->to;
foreach($hedTO as $t){
//echo $t->mailbox.'@'.$t->host.'<br />';
$array_mail[] = $t->mailbox.'@'.$t->host;
}
}
}
$i = 0;
if (!empty($array_mail)) {
$insertCount = 0;
foreach($array_mail as $m_){
// INSERT HERE
//echo $m_.'<br />';
$isExistWithID = $this->isExistWithID($user_id,$m_);
$email_err = $this->isValidEmail($m_);
$isValid = 0;
if($email_err == false){
$isValid = 1;
}
if($isExistWithID==0 && $isValid==0){
$insert = $this->pdoConnection->prepare("
INSERT INTO ws_email (
u_id,
we_email,
date_added
)
VALUES(
:u_id,
:we_email,
:date_added
)
");
$insert->bindParam(':u_id', $u_id);
$insert->bindParam(':we_email', $we_email);
$insert->bindParam(':date_added', $date_added);
// Insert Data
$u_id = $_SESSION['USERID'];
$we_email = $m_;
$date_added = date("Y-m-d H:i:s");
if($insert->execute()){
$insertCount++;
}
}
$i++;
}// end foreach
$response['success'] = $insertCount.'Email address(s) fetched successfully.';
}
//echo $i;
//
}else{
$response['error'] = 'No record found';
}
}else{
$response['error'] = 'IMAP does not connect';
}
}//end if error is equal to 0
/************ END NEW 29 SEP *************/
echo json_encode($response, JSON_PRETTY_PRINT);
我尝试尽可能地优化代码,但仍然花费很长时间,并且由于此服务器返回错误。
我想请你指导我如何优化它。谢谢。