CakePHP MySQL Query Günlüğü

5 Cevap php

Sanırım modellerde bulmak yöntemini kullandığınızda CakePHP yüzden onu nasıl ya da kullanımını sağlayacak eğer öyleyse Kek, aynı mı yapar, bu veritabanı sorguları raylar biliyorum, yürütülen yılında mysql sorguları oturum yolu olup olmadığını bilmek istedim o?

Shiv

5 Cevap

Assuming you are on a nix os, the best approach would actually to tail the mysql log itself.
You might learn some interesting things out of it.

deposundan yüklerken Ubuntu oturum

tail -f  /var/log/mysql/mysql.log

Aşağıda belirtildiği gibi, bu çok büyük bir performans katil (iyi, bütün günlükleri bazı performans etkisi vardır). Yani, sadece dev / QA makinelerde ve sadece üretim makine üzerinde kısa bir süre için kullanabilirsiniz emin olun.

This page sorguları raylar gibi aynı şekilde oturum Cake almak için talimatları vardır.

CakePHP 1.3 uses the sql_dump element for that.
You can use the element directly when Configure::read('debug') is set to 2:

echo $this->element('sql_dump');

Yoksa (gibi bir ShellTask ​​onu echo) onunla başka bir şey yapmak gerekiyorsa doğrudan kod almak

$sources = ConnectionManager::sourceList();

$logs = array();
foreach ($sources as $source):
    $db =& ConnectionManager::getDataSource($source);
    if (!$db->isInterfaceSupported('getLog')):
        continue;
    endif;
    $logs[$source] = $db->getLog();
endforeach;

Örneğin ile Echo:

print_r($logs)

Bu benim (element klasöre koyun sonra düzeni dahil) ne kullanın

<?php
    ob_start(); 
    echo $this->element('sql_dump');
    $out = ob_get_contents();
    ob_end_clean();
    CakeLog::write('mysql' , $out);
?>

sonra TMP.logs.DS.mysql.log yılında mysql.log dosya bulacaksınız

Tüm sorguları oturum Çok basit bir yöntem yürütülüyor:

Lütfen cake\libs\model\datasources\dbo\dbo_mysql.php olarak

: _execute fonksiyonu bulmak

function _execute($sql) {
        return mysql_query($sql, $this->connection);
}

hat "$this->log($sql);", "return mysql_query($sql, $this->connection);" daha önce ekleme

function _execute($sql) {
    $this->log($sql);
    return mysql_query($sql, $this->connection);
}

İşte bu kadar!! Tüm SQL Sorguları oturum alır. Emin günlük dosyası düzgün yapılandırılmış olduğundan emin olun ve yeterli izne sahip. Hoşlanmak