2017-02-17 4 views
0

Nehmen wir an, ich habe 2 php Dateien
In der ersten habe ich die Verbindung zur Datenbank. Da ich es in einer anderen PHP-Datei brauche, habe ich es einer globalen Variablen wie dieser zugewiesen.
Schließen mysqli Verbindung in einer anderen Datei

setconnection.php

<?php 
$servername = 'localhost'; 
$username = 'root'; 
$password = ''; 
$dbname = 'database'; 

// Create connection 
$GLOBALS['connect'] = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($GLOBALS['connect']->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$db_selected=mysqli_select_db($GLOBALS['connect'],'database'); 
mysqli_set_charset($GLOBALS['connect'],'utf8'); 
?> 

Und dann habe ich noch eine PHP-Datei, in der ich die Verbindung aus der obigen PHP-Datei verwenden.
Es ist richtig, die Verbindung so zu schließen?

index.php

include_once "setconnection.php"; 
$GLOBALS['connect']->close(); 

Antwort

0

gute Frage! Ich sehe es nirgendwo in den Beispielen. Durch das Schließen der Verbindung werden nur Speicherressourcen gespart. PHP soll sowieso eine nicht persistente Verbindung nach der Skriptausführung schließen. Es ist jedoch möglicherweise nicht immer der Fall. Ich hatte Server-CPU-Überlastungen, wenn Legacy-Code das Schließen von Verbindungen fortwährend ausließ. Ab sofort behalten wir eine Verbindung für mehrere Funktionen, was im Wesentlichen dasselbe ist, was Sie tun. Funktioniert gut für uns.

Referenz: http://php.net/manual/en/mysqli.close.php

+0

Mein Problem ist, dass ich eine Funktion in setconnection.php definiert habe, und wenn ich die Verbindung am Ende dieser Datei schließe, kann ich die Funktion in anderen PHP-Dateien nicht aufrufen ... – Daniel

+1

@Daniel nicht schließe es dann? –

+0

@YourCommonSense Ich weiß, dass PHP am Ende Verbindungen schließt. Aber ich habe hier einige Ratschläge gefunden, wo es heißt, dass wenn Sie Ihre Verbindung nicht selbst schließen, dies zu einer CPU-Überlastung führen kann. – Daniel

-1

Meiner Meinung nach, ist dies legitim. Vergessen Sie nicht, vor dem Schließen zu prüfen, ob die Verbindung wirklich offen oder nicht bereits geschlossen ist. Diese

-1

ist völlig legitim, sagte, wie durch Pekka auf Are PHP include paths relative to the file or the calling code?,

... nicht vergessen, dass include() fügt nur Code in das aktuell laufende Skript

So lassen Sie uns sagen, dass Sie eine Datei haben genannt example.php:

function example() { 
    echo 'Hello, world!'; 
} 

Und Sie sind es in index.php:

include 'example.php'; 
example(); 

Dies ist das gleiche, alles in einer Datei haben:

function example() { 
    echo 'Hello, world!'; 
} 

example(); 

So gibt es wirklich keine Fehler die Verbindung in einer anderen Datei beim Schließen Das ist nicht das, wo Sie die Verbindung geöffnet haben.

+0

Ich hoffe, niemand würde Ihre Idee folgen –

+0

Ich bin nicht sehr erfahren in PHP, aber warum nicht? – Condorcho

+0

, weil eine Verbindung einmal geöffnet werden sollte. –

Verwandte Themen