Bazen büyük gecikme PHP mail () kullanırken

3 Cevap php

Ben bir Windows uygulaması emir işleyen bir web sitesi var. Bu, aşağıdaki gibi çalışır:

  1. Kullanıcı tıklama "Sipariş şimdi" pencere uygulaması
  2. App bir PHP komut dosyası POST ile bir dosya yükler
  3. Komut derhal (sipariş bir db saklanan değildir) () işlevi PHP mail çağırır

Bu çoğu zaman gayet iyi çalışıyor. Ancak, bazen büyük bir gecikme (birkaç gün) meydana gelir. Ürün henüz teslim edilmemiştir neden müşteriler çağırır.

Gecikmiş posta e-posta başlıkları şöyle:

Microsoft Mail Internet Headers Version 2.0
Received: from barracuda.nkl.nl ([10.0.0.1]) by smtp.nkl.nl with Microsoft SMTPSVC(6.0.3790.3959);
     Wed, 26 May 2010 16:26:51 +0200
X-ASG-Debug-ID: 1274883818-2f8800000000-X58hIK
X-Barracuda-URL: http://10.0.0.1:8000/cgi-bin/mark.cgi
Received: from server45.firstfind.nl (localhost [127.0.0.1])
    by barracuda.nkl.nl (Spam & Virus Firewall) with ESMTP id ECAFD15776A
    for <orders@nkl.nl>; Wed, 26 May 2010 16:23:38 +0200 (CEST)
Received: from server45.firstfind.nl (server45.firstfind.nl [93.94.226.76]) by barracuda.nkl.nl with ESMTP id 85bAT2AU58kkxjPb for <orders@nkl.nl>; Wed, 26 May 2010 16:23:38 +0200 (CEST)
X-Barracuda-Envelope-From: nklsemin@server45.firstfind.nl
Received: from server45.firstfind.nl (localhost [127.0.0.1])
    by server45.firstfind.nl (8.13.8/8.13.8/Debian-3+etch1) with ESMTP id o4QEM3Hb004301
    for <orders@nkl.nl>; Wed, 26 May 2010 16:23:31 +0200
Received: (from nklsemin@localhost)
    by server45.firstfind.nl (8.13.8/8.13.8/Submit) id o4J9lA7M031307;
    Wed, 19 May 2010 11:47:10 +0200
Date: Wed, 19 May 2010 11:47:10 +0200
Message-Id: <201005190947.o4J9lA7M031307@server45.firstfind.nl>
To: orders@nkl.nl
X-ASG-Orig-Subj: easyfit - ref: Hoen3443
Subject: easyfit - ref: Hoen3443
X-PHP-Script: www.nklseminar.nl/emailer/upload.php for 77.61.220.217
From: info@schelwaldoptiek.nl
Content-type: text/html
X-Virus-Scanned: by amavisd-new
X-Barracuda-Connect: server45.firstfind.nl[93.94.226.76]
X-Barracuda-Start-Time: 1274883820
X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210
X-Barracuda-Virus-Scanned: by Barracuda Spam & Virus Firewall at nkl.nl
X-Barracuda-Spam-Score: 0.92
X-Barracuda-Spam-Status: No, SCORE=0.92 using global scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=3.0 tests=DATE_IN_PAST_96_XX, DATE_IN_PAST_96_XX_2, HTML_MESSAGE, MIME_HEADER_CTYPE_ONLY, MIME_HTML_ONLY, NO_REAL_NAME
X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.30817
    Rule breakdown below
     pts rule name              description
    ---- ---------------------- --------------------------------------------------
    0.00 NO_REAL_NAME           From: does not include a real name
    0.01 DATE_IN_PAST_96_XX     Date: is 96 hours or more before Received: date
    0.00 MIME_HTML_ONLY         BODY: Message only has text/html MIME parts
    0.00 HTML_MESSAGE           BODY: HTML included in message
    0.86 MIME_HEADER_CTYPE_ONLY 'Content-Type' found without required MIME
                               headers
    2.07 DATE_IN_PAST_96_XX_2   DATE_IN_PAST_96_XX_2
Return-Path: nklsemin@server45.firstfind.nl
X-OriginalArrivalTime: 26 May 2010 14:26:51.0343 (UTC) FILETIME=[7B80DDF0:01CAFCDF]

Gecikme burada ortaya görünmektedir:

Received: from server45.firstfind.nl (localhost [127.0.0.1]) by server45.firstfind.nl (8.13.8/8.13.8/Debian-3+etch1) with ESMTP id
o4QEM3Hb004301
for <orders@nkl.nl>; Wed, 26 May 2010 16:23:31 +0200
Received: (from nklsemin@localhost)
by server45.firstfind.nl (8.13.8/8.13.8/Submit) id o4J9lA7M031307;
Wed, 19 May 2010 11:47:10 +0200

Ben sitenizi barındıran web hosting hizmeti bu sorunu çeşitli kez rapor ettik. Onlar gecikme (imkansız) kendi ağ oluşmaz söylüyorlar.

Ama e-posta ilk posta oluşmaktadır edildikten sonra 7 gün, 26 Mayıs tarihinde kendi posta sunucusu görüldüğü teyit yok. Sırası da 19 Mayıs maçlar kullanıcının yerel PC, zaman damgası ile işaretlenmiş (yani PC saati sorun değil) bir

Tüm gecikmeli postalar (siparişler farklı günlerde yerleştirildi) seferde geldiğini görmek de ilginç. Yani birdenbire çeşitli gün posta kutuma 14 e-posta alırsınız.

Bu gecikme herhangi bir fikir tanıtıldı olabilir ki? Bu neden benim PHP kodunda bir hata olabilir mi? (Ben benim PHP kodu 7 gün içinde bir döngü tanıtmak inanamıyorum)

3 Cevap

Haklısın - PHP ile bunu yapmak çok şey.

Normalde yavaş posta sorunlarını tüm DNS sorunları hakkında - ama burada sorun değildir.

Ben bir MTA (Mail Transport Agent) yapılandırılmış ettik zaman ben 7 gün süresi vardı uzun zaman önce vazgeçmek için söylerdi.

Tüm gecikmeli postalar (siparişler farklı günlerde yerleştirildi) seferde geldiğini görmek de ilginç.

MTA sadece her 7 gün posta sıradan çıkarma yapılandırılmış (!) Ya da bir şeyler yanlış gitti ve bunu düzeltmek için hosting şirketi için 7 gün sürdü, ya benziyor.

Onlar gecikme kendi ağında meydana gelmez demek

Yeni bir hosting şirketi bulmak için zamanı.

C.

e-posta sadece bu gibi bilgileri göndermek çok güvenilir bir yol değildir.

Şansı karşılaşılan problemleri e-posta göndermek için girişimlerini anlamına katılan 2 sunuculardan birinde sadece bazı kısa vadeli bir sorun vardı vardır.

Posta sunucuları çoğunlukla (ben ilk denemeniz için 6 günden çok daha kısa bir zaman beklenen olurdu ama), yeniden denemeden önce bir süre bekler. Muhtemelen onlardan biraz patlama alıyorsanız nedeni tüm retries nihayet araya yoluyla elde edilmesi.

Bu olsa yeniden denemek için uzun süre beklemek olacağını biraz garip görünüyor.

Muhtemelen onlar bu iletinin gönderildiği zaman etrafında herhangi bir sorun yaşıyorsanız olsaydı görmek için posta sunucusu günlükleri bakmak gerekir.

Bu da var:

X-Virus-Scanned: by amavisd-new

Bu aslında postayı kabul ettikten sonra en az bir adım daha var olduğunu işaret eder. AMaViS kendisi büyük olasılıkla vb ClamAV, SpamAssassin, üzerine postayı geçen olurdu .. ve bu herhangi bir sebepten dolayı gecikme tanıtan olabilir.

Web sunucusu SMTP 8.13 sürüm numarası alındığında, Sendmail en olasıdır. Eğer sunucuya erişim her türlü varsa, hakları varsa, 'mailQ' ile giden posta kuyruğunu kontrol, ya da yöneticiler bunu sizin için orada yapmak zorunda. Gecikme adlı bir noktada, sunucu içinde bir yerde meydana gelen bu yana Sendmail 'bekleyen sıraya içine doldurulmuş almak gerektiğini, ve bu da gecikme sebebi bağlı olacaktır.