2010-03-25 12 views
7

Cakephp ile birkaç site kurdum. Bu sitelerden herhangi biri herhangi bir nedenle veritabanına olan bağlantılarını kaybederse, iyi işlemez. Temel olarak, tarayıcının çöktüğü ana kadar, bir hatayı tekrar tekrar göstermeye çalışmaktadır. Oluşturmanın kendisi, kendi içinden requestAction öğelerinin kullanılmasından kaynaklanır.Cakephp - veri tabanına bağlanamıyor ve incelikle düzeltilemiyorsa algıla.

if(!ConnectionManager::getDataSource('default')) 
{ 
    die(); //this will be a message instead 
} 

ama işe görünmüyor: Bilmek istiyorum ne

veritabanı bağlantısı Ben filtreden önce app_controller bu denedik

varsa kontrol edebilirim nasıl.

Teşekkür

cevap

7

şu kodu kullanın: I (bu etiketleri) mesajları yazdırdığımı İşte

<?php 
$filePresent = true; 
if (!file_exists(CONFIGS.'database.php')): 
    echo '<span class="notice-failure">Database configuration file is not present. Please contact [email protected]</span>'; 
    $filePresent = false; 
endif; 
if ($filePresent!=false): 
    uses('model' . DS . 'connection_manager'); 
    $db = ConnectionManager::getInstance(); 
    @$connected = $db->getDataSource('default'); 
    if (!$connected->isConnected()): 
    echo '<p><span class="notice-failure">Not able to connect to the database. Please contact [email protected]</span></p>'; 
    endif; 
endif; 
?> 

. Eko çizgi hattını die() ile değiştirebilirsiniz.

+0

bana eğer posta göndermek için kullanabilir Çok –

+1

teşekkürler DB hiç düştü! (Amazon RDS ile Im), harika çalışıyor! +1 – Anil

1

(Cakephp 3.x) Sadece PagesController en Ana görünümünde verilen örneği takip: Temelde

öyle:

use Cake\Datasource\ConnectionManager; 

    try { 
     $connection = ConnectionManager::get('yourconnection'); 
     $connected = $connection->connect(); 
    } catch (Exception $connectionError) { 
     //Couldn't connect 
    } 
    //connected 
+0

Bu, pasta 3'ün daha yeni sürümlerinde çalışır. Ancak, herhangi bir özel durum yakalayamıyorum, bunun yerine pasta, "src \ Template \ Error \ missing_connection.ctp" görünümünde hata iletisini görüntülemek için kullanır ... – Snorvarg

+0

Sabit, kullanarak istisnaları yakalayabilir "İstisna" yerine "\ Exception". Şuna bakın: https://stackoverflow.com/questions/30995594/how-do-i-throw-a-custom-try-catch-exception-on-cakephp – Snorvarg