慢速SwiftMailer和内部服务器错误GoDaddy

时间:2016-05-26 01:13:27

标签: php swiftmailer

我正在尝试使用SwiftMailer开发大规模电子邮件系统(最多一次发送不超过200封电子邮件),但执行速度非常慢。它在发送纯文本电子邮件时有效,但带有附件的电子邮件需要一段时间。

当向163个用户发送包含大约1.5MB附件的电子邮件时,有时我会收到500内部服务器错误,但我会查看我的错误日志,他们不会说任何话(可能是因为我'我在GoDaddy上使用共享Linux主机)。错误出现之前大约需要2分21秒,并且只有114个SMTP中继而不是163. 编辑:我已将此代码添加到我的脚本顶部,但是我仍有同样的问题。

set_time_limit(0);
ini_set('max_execution_time', 0);
ini_set('memory_limit', '256M');
ini_set('mysql.connect_timeout', 500);
ini_set('default_socket_timeout', 500);

出现以下错误:

  

内部服务器错误

     

服务器遇到内部错误或配置错误,无法完成您的请求。

     

请通过webmaster@mitsapp.com与服务器管理员联系,告知他们此错误发生的时间以及您在此错误发生之前执行的操作。

     

服务器错误日志中可能提供了有关此错误的更多信息。

     

此外,尝试使用ErrorDocument处理请求时遇到500内部服务器错误错误。

我已经在try / catch块中有代码,但是这并没有向我显示当前的任何错误。我认为问题在于脚本中发生的查询量。如果是这样,我该如何优化它们?如果没有,我怎么能解决这个问题?这是从添加附件开始的代码。:

//Add attachments
if(isset($_FILES['attachments'])) {
    $attCount = count($_FILES['attachments']['name']);
    $x = 0;
    while($x < $attCount) {
        if(!isset($_FILES['attachments']['name'])) {
            continue;
        }
        $message->attach(Swift_Attachment::fromPath("uploads/".$_FILES['attachments']['name'][$x]));
        $x++;
    }
}

//Sender Details
$message->setFrom('no-reply@mitsapp.com');
$message->setSender('no-reply@mitsapp.com');
try {$reply = Swift_Validate::email($_POST['reply']);} catch(Exception $e) {header("Location: ../communicate.php?error=2");}
$message->setReturnPath($_POST['reply']);
$message->setReplyTo($_POST['reply']);

//Send the message
require "connect.php";
$failedRecipients = array();
$numSent = 0;
$sendTo = $_POST['sendTo'];
$emails = array();
foreach ($sendTo as $ID) {
    $sql = "SELECT * FROM ".strtolower($_SESSION["mid"])."_current_roster WHERE ID=".$ID;
    $result = mysqli_query($conn, $sql) or die("Error sending email. ".mysqli_error($conn));
    if(mysqli_num_rows($result)  > 0) {
        while($row = mysqli_fetch_assoc($result)) {
            $emails[] = $row['email'];
        }
    }
}
foreach($emails as $address) {
    $message->setTo($address);
    $numSent += $mailer->send($message, $failedRecipients);
}

之后有更多的代码可以正常工作,但是没有内部服务器错误,但是当有错误时就不会运行。

0 个答案:

没有答案