Üretim ortamında ciddi kullanım için debug_backtrace () güvenli midir?

3 Cevap php

Bu işlevsellik Ben onun kararlılığı ve performansı hakkında endişe o kadar güçlü değil.

Sen ne düşünüyorsun?

UPDATE

Ne yapıyorum şudur:

    $old_dir = getcwd();
    chdir( dirname($included_file) );
    include ( $included_file );
    chdir( $old_dir );

Esasen sadece include ( $included_file );, ama o içeride $included_file kendisi olduğu gibi aynı dizinde olan 3.php bulamıyorum, bu yüzden manuel olarak ayarlanan cwd ve o, o debug_backtrace neden gerekli olduğu için find.As değil neden 3.php başka {[tarafından dahil çünkü nedenini bulmak eğer güzel olurdu works.But göreli yol çalışmıyor çünkü (5)]}, aşağıda belirtildiği gibi nihayet mutlak yolu kullanarak, [(3)]} dahil olmak üzere dosya yolunu almak için {kullanmak zorundadır.

, Yukarıdaki kodu bir method bağlamında olduğu gibi, çoğaltmak kolay değil, ve hiç kimsenin bu tür sorunla karşılaşırsa, çok daha fazla .. zaten ben de, burada durdurmak istiyorum maliyeti sadece 3 ekstra satır, büyük bir anlaşma olduğunu.

3 Cevap

debug_backtrace benim deneyim nispeten pahalı, o yüzden (uyarı veya bildirimler yakalar ve her zaman bir backtrace gerçekleştiren bir özel hata işleyicisi örneğin) döngüler kullanılan değildir dikkatli olmalıdır.

Hata günlüğü her türlü için, ben oldukça değerli olduğunu düşünüyorum, ve kesinlikle bir performans sorunu değil, sadece bir kez çağrılacak gidiyor çünkü. Bu bir hata raporunda bir hata izleme raporu dahil etmek her zaman elbette iyidir.

(Başka bir çökmesine neden çağırarak yani) bu fonksiyonun istikrar ile herhangi bir sorunları olacağını neden ben göremiyorum, ben herhangi bir sorun duymadım. Sadece "yakaladım" Ben görebiliyorum edilir this note in the User Contributed Notes hayır _toString yöntemi tanımlanmış olması fonksiyon parametresi olarak nesneler kullanırken.

Tabii ki, son kullanıcıya bir backtrace sonuçları çıkış asla - söylemeye gerek yok.

Eh, onun adını düşünüyor, benim uygulama bir "normal" bir parçası olarak kullanmak istiyorum emin değilim - ben iyi ne de kötü ya da olduğunu söyledi okumak bir şey olduğunu hatırlamıyorum bile.


I don't really know what you mean about "serious usage", but :

  • Eğer çalışmak için uygulama için bu işlevi ihtiyacınız varsa, bu tasarım bir sorun olduğunu gösterebilir migh
  • Bu fonksiyon, bir hata işleyicisi, yararlı olabilir günlüğe kaydetmek istediğiniz zaman / nasıl nerede bir hata oldu: it will make the log files more useful, bu hataların kaynaklarını izini geldiğinde

"Hata günlüğü" tanımına karşılık bu olsa, emin değilim serious usage?

Tamam, benim anlayış, sorunu takip ediyor

Sen en "main.php" diyelim, bir php dosyası var. "Main.php" in bazı dizinindeki "A.php" dahil ediyoruz:

# in "main.php"
include '/some/dir/A.php';

A.php, sırayla, A.php gibi aynı dizinde 'B.php' içerir

# in "A.php"
include 'B.php'; 

Sorun: "/ some / dir /" (A ve B nerede ikamet) "main.php" için geçerli olmadığından, php B.php A.php adlı görmüyor

çözeltisi: A.php /some/dir için mutlak tam yolunu kullanın. dirname(__FILE__) yoluyla kodlamalısınız veya dinamik olarak elde ya

# in "A.php"
include dirname(__FILE__) .'/B.php';