WordPress eklentisi işleme PHP hata

2 Cevap php

Ben PHP ve Wordpress hem bir acemi değilim (ama C # tamam yapmak), ve ben yazmaya çalışıyorum özel bir eklenti işleme hatayı anlamak için mücadele ediyorum. Eklentinin temelleri bir exsiting MSSQL veritabanı (onun değil, standart MYSQL db unutmayın ...) sorgulamak ve geri ekrana satır döndürmektir. Bu iyi çalışıyordu, ancak hosting sağlayıcısı (Tamam olduğunu düşündüm) hata işleme sorunu götürdü benim veritabanı çevrimdışı almıştır.

Aşağıdaki kod veritabanı (beklendiği gibi) bağlanmak için başarısız olduğunu, ancak ekrana bir hata koyar ve sayfa işleme durdurur. Hatta çıkış değil 'veya ölecek' hata metni yok.

QUESTION: How can I just output a simple "Cant load data" message, and continue on normally?

function generateData()

{

 global $post; 

 if ("$post->post_title" == "Home")
 { 
  try 
  {
   $myServer = "<servername>";
   $myUser = "<username>";
   $myPass = "<password>";
   $myDB = "<dbName>"; 

   //connection to the database
   $dbhandle = mssql_connect($myServer, $myUser, $myPass) 
                              or die("Couldn't open database $myDB"); 


            //... query processing here...
        }
        catch (Exception $e)
  {
         echo "Cannot load data<br />";
  }

 }

 return $content;
}

Hata oluşturuluyor: (line 31 $ db = mssql_connect is ...)

Uyarı: mssql_connect () [function.mssql-connect]: sunucuya bağlanılamıyor: içinde hat 31 üzerinde

Ölümcül hata: 30 saniye Maksimum yürütme zamanı aşıldı hat 31 üzerinde

2 Cevap

Her şeyden önce, eğer mssql_connect raises a warning when there's a problem, there is not much you can do to avoid it : the only thing you could do is hide it, using the @ operatör :

if (($dbhandle = @mssql_connect($myServer, $myUser, $myPass)) === false) {
    // connection failed
}

Not: Bir bağlantı hatası oluştuğunda die() olmamalı: bu kesinlikle arzu değil tüm uygulamanın yürütülmesini, durdururuz.


The Fatal Error is a second problem (which is probably a consequence of the first one).

Bir Fatal Error kurtarmak unutmayın: o Fatal. Hangi, bir yol veya başka bunu önlemek gerektiği anlamına gelir.

Burada, hata script max_execution_time seconds ; as the error is reported on the mssql_connect çizgiden daha fazla çalışıyor olması, ben bağlantı başarılı olmak için komut bekliyor varsayalım, ve daha az etablished almaz o 30 saniye.


I don't have an SQL Server database to test, but looking at the Runtime Configuration section of the manual for mssql, I'd say that these look interesting :

       name               Default value
mssql.connect_timeout        "5"
mssql.timeout                "60"

Sen, o değiştirmeyi deneyebilirsiniz

  • Ya php.ini dosyasında, eğer bunu değiştirebilirsiniz
  • ya bağlanmayı denemeden önce ini_set() kullanarak.

Ikinci durumda, böyle bir şey hile yapabilir:

ini_set('mssql.connect_timeout', '3');
ini_set('mssql.timeout', '3');

Ayrıca şık bir şekilde hataları işlemek için WP_Error Sınıf bakmak isteyebilirsiniz. Bu genel bir yaklaşım ve olduğunu unutmayın Eğer ayrı ayrı belirli bir hata algılama mantığını işlemek zorunda kalacak. WP_Error tek bir yerde tüm hataları toplama size yardımcı olacaktır.