Side skal virke selvom mysql server eller mysqli ikke gør.

Her kan du få hjælp og stille spørgsmål til MySQL/MySQLi!
Besvar
Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Side skal virke selvom mysql server eller mysqli ikke gør.

Indlæg af scootergrisen » 7. feb 2013, 23:23

Hvordan gør man når man bruger mysqli kode i PHP hvor man gerne vil have hjemmesiden til at blive vist ligemeget om mysql serveren er nede eller om databasen eller table ikke findes osv osv.

Jeg havde slukket for min mysql server også stod browseren bare og søgte og søgte.

Det ville være meget rart at det ikke gik ud over resten af hjemmeside hvis der er noget galt med mysql serveren eller mysqli koden.

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg: 1528
Tilmeldt: 28. dec 2010, 10:49

Re: Side skal virke selvom mysql server eller mysqli ikke gø

Indlæg af ThomasI » 8. feb 2013, 13:01

hmm... godt spørgsmål! Hvis en side er virkelig afhængig af en mysql server kan det jo være svært at vise siden 100% uden den...

Midt bedste bud ville være at tilføje en masse else statements, så ledes at hvis mysql serveren er nede, så vil din side og scripts kunne loades, men uden indhold bare databasen.

Men måske er der en mere fiks måde at gøre det på :-)

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Re: Side skal virke selvom mysql server eller mysqli ikke gø

Indlæg af scootergrisen » 8. feb 2013, 14:36

Dette virker ikke hvis mysql serveren er stoppet.

Kode: Vælg alt

$db = new mysqli($GLOBALS['setup']['mysql_server'], $GLOBALS['setup']['mysql_bruger'], $GLOBALS['setup']['mysql_kodeord'], $GLOBALS['setup']['mysql_database']);
Når PHP kommer til koden stopper resten af siden i at blive vist.

Med denne kode kan man så gøre det så man får besked når serveren er nede i stedet for PHP bare stopper der. Men der er godt nok en del ekstra kode.

Kode: Vælg alt

['mysql_kodeord'], $GLOBALS['setup']['mysql_database']);

$mysqli = mysqli_init();

if (!$mysqli) {
    echo 'mysqli_init failed';
}

if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
    echo 'Setting MYSQLI_INIT_COMMAND failed';
}

if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 2)) {
    echo 'Setting MYSQLI_OPT_CONNECT_TIMEOUT failed';
}

if (!$mysqli->real_connect($GLOBALS['setup']['mysql_server'], $GLOBALS['setup']['mysql_bruger'], $GLOBALS['setup']['mysql_kodeord'], $GLOBALS['setup']['mysql_database'])) {
    echo 'Connect Error (' . mysqli_connect_errno() . ' ' . mysqli_connect_error();
}

echo 'Success... ' . $mysqli->host_info . "\n";

$mysqli->close();

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg: 1528
Tilmeldt: 28. dec 2010, 10:49

Re: Side skal virke selvom mysql server eller mysqli ikke gø

Indlæg af ThomasI » 8. feb 2013, 15:05

hmm...Det var umiddelbart sådan at jeg ville gøre det ;)

Men hvor ofte er det lige at ens sql server går ned? Hvis man har en ordentlig udbyder, så burde man ikke behøve bruge tid på sådanne foranstaltninger her ;)

Tror faktisk selv de største sites går helt ned hvis deres sql server ikke virker - alle funktioner indhold osv vil alligevel være væk, så det ville ikke give nogen mening at have besøgende på sit site alligevel :)

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Re: Side skal virke selvom mysql server eller mysqli ikke gø

Indlæg af scootergrisen » 8. feb 2013, 15:08

Jeg bruger ikke mysql til at vise min hjemmeside det kun forummet der ikke ville virke uden.
Også det ratingsystem jeg arbejder på nu.

Men det også meget rart at kunne få en fejlbesked i stedet for at siden bare stopper der eller er blank.

Ellers så sidder man der og aner ikke hvorfor det ikke virker.

Brugeravatar
Daniel
Admin
Admin
Indlæg: 625
Tilmeldt: 14. jun 2011, 09:27
Geografisk sted: Danmark, Fyn, Nørre Aaby
Kontakt:

Re: Side skal virke selvom mysql server eller mysqli ikke gø

Indlæg af Daniel » 8. feb 2013, 20:14

Du kan eventuelt sætte op med fejlbeskeder i nogle if statements, hvor den så bruger die('Fejlbesked'), og slår error beskeder fra.

Kode: Vælg alt

error_reporting(0);

$db = new mysqli($GLOBALS['setup']['mysql_server'], $GLOBALS['setup']['mysql_bruger'], $GLOBALS['setup']['mysql_kodeord'], $GLOBALS['setup']['mysql_database']);

if(!$db) {
die('Kunne ikke forbinde til databasen!')
}
Så viser den bare en tom hvis side med teksten: Kunne ikke forbinde til databasen!
På den måde kan folk godt nok ikke bruge resten af siden, men det er til gengæld meget nemt at fejlsøge, især hvis man laver et lille dokument til sig selv med hvor de forskellige fejlbeskeder hører til, får man en fejl kan man søge det op i det dokument, og så ved man præcis at det er i fx mysqli.connect.php

Tror ikke det er muligt at få resten af siden til at virke hvis man bruger MySQL på den, og serveren går ned, men er selvfølgelig heller ikke ekspert. :)

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Re: Side skal virke selvom mysql server eller mysqli ikke gø

Indlæg af scootergrisen » 8. feb 2013, 20:30

Meningen var at folk netop godt skulle kunne bruge resten af hjemmesiden selvom mysql servern var nede.
Jeg må lave noget med real_connect.

Besvar