PHP işleme küresel hata için en iyi yöntemler?

2 Cevap php

Ben PHP 5 istisnalar hataları dönüştürür ve bir dosya ve / veya belirli bir hesaba e-postalar onları için hatalarını kaydeder bir sınıf kullanılır. Bunu yapmak için daha iyi bir yolu var mı? Biliyorum bu iyi olabilir ilgili bir şey var. Ben set_error_handler kullanıyorum.

set_error_handler("exception_error_handler");

Benim kod yapar ne o günlükleri ve e-postalar hataları gerekir ama ben sürecini en iyi şekilde yapıyorum. Bir veri bağlantısı bir hata mevcut olacağını varsayarak - bir veritabanı için oturum için daha iyi olurdu. Web siteleri için endüstri standardı nedir?

2 Cevap

Hataları ile başa çıkmak için kendi kod kesinlikle kurşun geçirmez olmalıdır.

Bazen çünkü test unuttum gerçekten anlaşılmaz bir sebeple içinde başlayacaklarını, ancak yine de zaman zaman onun kıyamet kod sürümü ile mücadele çalıştırmak istiyorum.

Bir veritabanına çıkışını Yazma size kodu için büyük bir bağımlılık yaratır - ve veritabanı yokluğu rapor olacağını sorunların önemli bir nedeni olması muhtemeldir.

Posta dayanarak ancak bir kesinti durumunda en acil hedefi sistem yeniden çalışmaya almak olmalıdır, hala bir bağımlılık - yani bir e-posta göndererek bir şey düzeltmek gerektiğini sizi uyaran çok etkili bir yoldur.

PHP'nin dosya işleme tesisleri, eşzamanlı erişim için kendilerini borç yoktur - ben yerel bir olay günlüğe tavsiye ediyorum rağmen, sizin kod dosyaları yazmak kalmaz - syslog arabirimini kullanın. Tüm yollarla ilgili detayları after Eğer syslog onu yolladım bir e-posta gönderin.

HTH

C.

Ben hata işleyicisi içine mantığı dökümü olmaz.

Kohana bu yöntemi bir göz atın.

/**
* PHP error handler, converts all errors into ErrorExceptions. This handler
* respects error_reporting settings.
*
* @throws ErrorException
* @return TRUE
*/
public static function error_handler($code, $error, $file = NULL, $line = NULL)
{
    if (error_reporting() & $code)
    {
        // This error is not suppressed by current error reporting settings
        // Convert the error into an ErrorException
        throw new ErrorException($error, $code, 0, $file, $line);
    }

    // Do not execute the PHP error handler
    return TRUE;
}

Temiz ve ne yöntemi açıklanır. Şimdi bir özel durum işleyici içine veya bir catch bloğu içinde sizin işleme taşıyabilirsiniz.