Php İle Veritabanı Üzerinden Dinamik Bir Hata Kayıt Sistemi Nasıl Yapılır?

Php İle Veritabanı Üzerinden Dinamik Bir Hata Kayıt Sistemi Nasıl Yapılır?
Php İle Veritabanı Üzerinden Dinamik Bir Hata Kayıt Sistemi Nasıl Yapılır?

PHP ile Veritabanı Üzerinden Dinamik Bir Hata Kayıt Sistemi Nasıl Yapılır?

Modern web uygulamalarında, kullanıcıların karşılaştığı hataları anında tespit etmek ve çözümlemek, yazılımın sürdürülebilirliği için kritik bir öneme sahiptir. PHP ile veritabanı üzerinden dinamik bir hata kayıt sistemi oluşturmak, sisteminizde meydana gelen beklenmedik durumları (exception) veya mantıksal hataları merkezi bir noktada toplamanızı sağlar. Bu rehberde, 2026 standartlarına uygun, güvenli ve ölçeklenebilir bir hata yönetim mekanizmasının nasıl inşa edileceğini adım adım öğreneceksiniz.

Bu eğitim, PHP 8.x ve üzeri sürümlerini kullanan, veritabanı işlemlerinde PDO (PHP Data Objects) yapısına hakim olmak isteyen geliştiriciler için hazırlanmıştır. Hata kayıt sistemi sayesinde, uygulamanızın canlı ortamda (production) verdiği hataları takip edebilir, kullanıcı deneyimini iyileştirebilir ve hata ayıklama (debugging) süreçlerini hızlandırabilirsiniz.

Gereksinimler ve Ön Hazırlık

Projenize başlamadan önce sisteminizin şu araçları desteklediğinden emin olmalısınız. PHP'nin modern sürümleri, hata yönetimi konusunda çok daha gelişmiş araçlar sunmaktadır.

  • PHP 8.2 veya üzeri bir sürüm.
  • MySQL veya MariaDB veritabanı sunucusu.
  • PDO eklentisinin aktif olduğu bir PHP yapılandırması.
  • Hata kayıtlarını tutacak bir veritabanı tablosu.

Öncelikle, hataları saklayacağımız veritabanı tablosunu oluşturmalıyız. Bu tablo, hatanın türü, mesajı, dosya yolu ve oluştuğu zaman gibi kritik bilgileri içermelidir.

CREATE TABLE hata_kayitlari (
    id INT AUTO_INCREMENT PRIMARY KEY,
    hata_turu VARCHAR(50),
    hata_mesaji TEXT,
    dosya_yolu VARCHAR(255),
    satir_no INT,
    olusturma_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Adım 1: Veritabanı Bağlantısını Yapılandırma

Güvenli bir hata kayıt sistemi için veritabanı bağlantısının PDO ile yapılması şarttır. PDO, SQL Injection saldırılarına karşı hazırlıklı ifadeler (prepared statements) kullanarak verilerinizi korur.

Adım 2: Hata Yakalayıcı (Logger) Sınıfını Tasarlama

Hataları veritabanına kaydedecek merkezi bir sınıf oluşturmak, kodun tekrar kullanılabilirliğini (reusability) artırır. Bu sınıf, hata bilgilerini parametre olarak alıp veritabanına işleyecektir.

Adım 3: PHP Hata Yakalama Mekanizmasını Entegre Etme

PHP'nin kendi hata yönetimi fonksiyonlarını (set_error_handler ve set_exception_handler) kullanarak, uygulama genelindeki tüm hataları yakalayabiliriz. Bu sayede manuel olarak her yerde "try-catch" yazmak yerine, sistem genelinde bir dinleyici kurmuş oluruz.

Adım 4: Hata Kayıtlarını Görüntüleme Paneli

Kaydedilen hataları yönetmek için basit bir arayüz oluşturmak, hataların analizini kolaylaştırır. Bu panelde güvenlik önlemi olarak sadece yetkili kullanıcıların erişimine izin verilmelidir.




Adım 5: Hata Kayıtlarını Filtreleme ve Analiz Etme

Veritabanında biriken binlerce hata kaydı arasında kaybolmamak için, kayıtları yönetilebilir parçalara ayırmak ve belirli kriterlere göre filtrelemek kritik öneme sahiptir. Özellikle üretim ortamında (production), hataların sıklığına göre önceliklendirme yapmak, sistemin kararlılığını artırır.

Aşağıdaki SQL sorgusu, belirli bir zaman aralığındaki ve belirli bir hata seviyesindeki kayıtları çekmek için kullanılabilir:


// Hata seviyesine ve tarihe göre filtreleme yapan örnek metot
public function getFilteredLogs($level, $startDate, $endDate) {
    $sql = "SELECT * FROM error_logs WHERE error_level = :level AND created_at BETWEEN :start AND :end ORDER BY created_at DESC";
    $stmt = $this->db->prepare($sql);
    $stmt->execute([
        'level' => $level,
        'start' => $startDate,
        'end' => $endDate
    ]);
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

Bu verileri bir tablo yapısında listelerken, kritik hataları (örneğin "Fatal Error") kırmızı renkli satırlarla vurgulamak, geliştiricinin dikkatini doğrudan en önemli soruna çekmesini sağlar.

İleri Düzey İpuçları: Performans ve Güvenlik Optimizasyonu

Hata kayıt sistemi, uygulamanın kendisi kadar hızlı olmalıdır. Eğer veritabanı yazma işlemleri senkron bir şekilde gerçekleşirse, yoğun trafik alan sitelerde performans darboğazı yaşanabilir. Bu durumu aşmak için şu yöntemleri değerlendirebilirsiniz:

1. Asenkron Kayıt ve Kuyruk Yapısı

Hataları doğrudan veritabanına yazmak yerine, bir mesaj kuyruğuna (Redis veya RabbitMQ gibi) göndermek, uygulamanın yanıt süresini milisaniyeler seviyesinde tutar. Kuyrukta bekleyen hatalar, arka planda çalışan bir worker tarafından veritabanına aktarılır.

2. Hata Kayıtlarında Hassas Veri İzolasyonu

Hata logları içerisinde kullanıcı şifreleri, kredi kartı bilgileri veya oturum anahtarları (session tokens) gibi hassas verilerin yer alması ciddi bir güvenlik açığıdır. Logger sınıfınız içerisinde, veritabanına yazmadan önce veriyi temizleyen (sanitizing) bir filtreleme katmanı ekleyin:


private function sanitizeData($message) {
    $patterns = ['/password=[^&]*/i', '/token=[^&]*/i'];
    $replacements = ['password=***', 'token=***'];
    return preg_replace($patterns, $replacements, $message);
}

3. Veritabanı İndeksleme

Hata kayıt tablonuz büyüdükçe, error_level ve created_at sütunlarına indeks eklemek, panelin yüklenme süresini ciddi oranda hızlandıracaktır. İndeksleme için şu SQL komutunu kullanabilirsiniz:


CREATE INDEX idx_error_level ON error_logs(error_level);
CREATE INDEX idx_created_at ON error_logs(created_at);

Bu optimizasyonlar, sisteminizin sadece hataları yakalamasını değil, aynı zamanda bu hataları yönetirken uygulamanızın genel hızından ödün vermemesini sağlar.

Bu yazıya tepkinizi paylaşın:
Zeynep Kaya

Ev ekonomisi ve kişisel organizasyon üzerine birçok yayın yönettim. Okuyucuların günlük yaşam kalitesini artıracak uygulanabilir çözümler üretmeyi hedefliyorum.

Yorumlar (0)

Yorum Yaz