2008-10-15 6 views
2

Je travaille avec logging in PHP with Pear, et je rencontre un problème standard: puis-je utiliser la journalisation basée sur des fichiers lorsque la base de données n'est pas disponible? Cela ne me dérange pas si c'est lent en raison de problèmes de simultanéité, mais cela ne peut pas échouer à travailler en raison de plusieurs coups simultanés.Vous vous connectez à votre base de données, où vous vous connectez lorsque votre base de données est en panne?

Je pose cette question en général (pour d'autres technologies web) et spécifiquement pour Pear pour PHP.

Merci!

Répondre

6

En général, la connexion à la système de fichiers est un bon recul si vous ne pouvez pas vous connecter à votre base de données. Les coups simultanés ne devraient pas poser de problème (verrous ...). Si vous avez déjà vos journaux adaptés pour une base de données peut-être le moyen le plus simple d'aller serait d'utiliser sqlite comme une retombée.

Une autre façon serait d'envoyer par courriel les événements du journal dans ce cas, en plus de ne pas les perdre cette approche devrait vous faire prendre conscience de votre problème de base de données plus rapidement.

+0

bien! J'aime l'idée de SqlLite ET l'idée d'email. –

+2

Je ne suis pas un grand défenseur de l'OO, mais cela semble être un excellent moyen de masquer la journalisation derrière une interface et de faire en sorte que l'interface passe son fournisseur de journalisation (email/sqllite/db/file) –

0

Vous pouvez passer un objet de base de données existante dans le singleton method of Log - si vous ne disposez pas d'une base de données, vous pouvez revenir à des méthodes d'exploitation forestière alternatives (ou bon vieux user_error())

require_once 'DB.php'; 
$db = &DB::connect('pgsql://[email protected]+unix/logs'); 

$conf['db'] = $db; 
$logger = &Log::singleton('sql', 'log_table', 'ident', $conf); 
Questions connexes