FORUM
FORUM
Forumindex / Webbutveckling & programmering / PHP - Mysqli (Ladda sida även vid fel)
2015-08-26 00:52#1

k0nan
Ingen klan

BrutalCS Poet
2236

Hejsan,
Jag har en liten insticksmodul som hämtar data från en liten opålitlig SQL Server som ibland verkar kunna vara offline vilket gör att hemsidan inte alls vill ladda.

Just nu ser det ut såhär:
Kod
1$db = mysqli_connect('****', '****', '****', '****'); 
2if (!$db) {
3   die('Something went wrong while fetching the toplist results');
4}


Felmeddelandet som visas när SQL Servern är oåtkomlig är detta:
Citat

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator to inform of the time the error occurred and of anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


Hur kan jag göra så att resten av sidan laddas även om sidan inte får någon kontakt med servern?
5 kommentarer, visar 1-5 - Första « [1] » Sista
2015-08-26 08:27#2

Mana
Ingen klan

Grafiker
1718

Ta bort
Kod
1die('Something went wrong while fetching the toplist results');


Vill du fortfarande ha meddelande så byt ut till die till echo "Meddelande";

Die motsvarar exit;

Senast redigerad 2015-08-26 08:27
2015-08-26 11:52#3

k0nan
Ingen klan

BrutalCS Poet
2236

Citat av Mana

Ta bort
Kod
1die('Something went wrong while fetching the toplist results');


Vill du fortfarande ha meddelande så byt ut till die till echo "Meddelande";

Die motsvarar exit;


hm, trodde sidan borde ha laddats ändå eftersom denna del includeras sist i koden. Die ska väl bara avbryta läsning av kod som kommer efter? Men detta verkar fungera. Thx!

Update: det funkar prima när man använder fel databasnamn eller så men om sql servern är helt offline så laddar sidan en lång tid och sen blir det en standard error-sida (den jag citerar i topic)
Kan felet ha med att göra att SQL'n inte är lokal? Eller att vi ansluter med ett hostname istället för IP?

Senast redigerad 2015-08-26 21:02
2015-08-27 12:57#4

Mana
Ingen klan

Grafiker
1718

Citat av k0nan

Citat av Mana

Ta bort
Kod
1die('Something went wrong while fetching the toplist results');


Vill du fortfarande ha meddelande så byt ut till die till echo "Meddelande";

Die motsvarar exit;


hm, trodde sidan borde ha laddats ändå eftersom denna del includeras sist i koden. Die ska väl bara avbryta läsning av kod som kommer efter? Men detta verkar fungera. Thx!

Update: det funkar prima när man använder fel databasnamn eller så men om sql servern är helt offline så laddar sidan en lång tid och sen blir det en standard error-sida (den jag citerar i topic)
Kan felet ha med att göra att SQL'n inte är lokal? Eller att vi ansluter med ett hostname istället för IP?


Jag tror att det har med att MySQLi försöker få kontakt med databasen och när den inte får det försöker den igen osv. Tillslut så stänger PHP av och ger felmeddelande.

Testa detta och se vad som står:

Kod
1if ($mysqli->connect_error) {
2    echo $mysqli->connect_errno;
3}


Annars,

Testa ladda datan från databasen via AJAX istället. Då lär din sida fungera fint även fast databaskontakten inte fungerar.

Alltså, flytta databas koden till en extern php fil och skicka en request från sidan via AJAX.

Senast redigerad 2015-08-27 12:58
2015-08-27 23:50#5

k0nan
Ingen klan

BrutalCS Poet
2236

Citat

Kod
1if ($mysqli->connect_error) {
22        echo $mysqli->connect_errno;
33    }


Redan testat detta och det funka tyvär inte :

Citat

Testa ladda datan från databasen via AJAX istället. Då lär din sida fungera fint även fast databaskontakten inte fungerar.

Jag kan verkligen inget om AJAX/Jquery... Kan du hjälp mig lite på draven. Säg att jag slänger in databasanslutningen i en php fil som får heta hejsan.php
2015-08-28 19:33#6

Mana
Ingen klan

Grafiker
1718


Citat av k0nan

Citat

Kod
1if ($mysqli->connect_error) {
22        echo $mysqli->connect_errno;
33    }


Redan testat detta och det funka tyvär inte :

Citat

Testa ladda datan från databasen via AJAX istället. Då lär din sida fungera fint även fast databaskontakten inte fungerar.

Jag kan verkligen inget om AJAX/Jquery... Kan du hjälp mig lite på draven. Säg att jag slänger in databasanslutningen i en php fil som får heta hejsan.php


Gör såhär. Ladda jQuery på din hemsida så det blir mycket mindre kod.
Skapa en fil som du vill ha din databas kod i.

Sedan kör du denna kod som skickar en ajax request till hejsan.php och kollar om den får tillbaka status koden 500. Får den det så avbryter den resten och då kan du till exempel skicka ett felmeddelande.

Kod
1$.ajax({
2
3  url: "hejsan.php",
4  statusCode: {
5
6    500: function(){
7
8      return false;
9
10    }
11
12  }
13
14}).done(function () {
15 
16  window.location.href = "filen med databasen.php";
17
18});


Skrev detta direkt på siten och har inte provat så säg till om du får några problem.
5 kommentarer, visar 1-5 - Första « [1] » Sista
AKTIVA TRÅDAR