2017-02-17 5 views
0

Предположим, у меня есть 2 php-файла
В первом случае у меня есть соединение с базой данных. Так как мне это нужно в других php-файлах, я назначил глобальную переменную вроде этого.
Закрыть соединение mysqli в другом файле

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'); 
?> 

А то у меня есть еще один файл PHP, в котором я использую соединение из указанного выше файла PHP.
Правильно закрыть соединение следующим образом?

index.php

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

ответ

0

Хороший вопрос! Я никогда не вижу его нигде в примерах. Закрытие соединения сохранит только ресурсы памяти. Предполагается, что Php будет закрывать непостоянное соединение после выполнения сценария. Однако это может быть не всегда так. У меня были перегрузки сервера CPU, когда устаревший код настойчиво пропускал закрывающие соединения. На данный момент мы сохраняем одно соединение для нескольких функций, которое по сути является тем же, что вы делаете. Хорошо работает для нас.

Ссылка: http://php.net/manual/en/mysqli.close.php

+0

Моя проблема в том, что у меня есть функция, определенная в setconnection.php, и если я закрою соединение в конце этого файла, я не могу вызвать функцию в других файлах php ... – Daniel

+1

@ Daniel do not закрыть его тогда? –

+0

@YourCommonSense Я знаю, что php закрывает соединения в конце. Но я нашел здесь несколько советов, в которых говорится, что если вы не закрываете свое соединение самостоятельно, это может привести к чрезмерной нагрузке процессора. – Daniel

-1

По-моему, это нормально. Не забудьте проверить, действительно ли соединение открыто или еще не закрыто перед его закрытием.

-1

Это совершенно законно, как сказал Pekka на Are PHP include paths relative to the file or the calling code?,

... помните, что include() просто вставляет код в настоящее время работает скрипт

Итак, допустим, у вас есть файл называется example.php:

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

А вы включите его в index.php:

include 'example.php'; 
example(); 

Это то же самое, как иметь все в одном файле:

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

example(); 

Так что есть на самом деле не любая ошибка при закрытии соединения в другом файле который не является тем, с которого вы открыли соединение.

+0

Надеюсь, никто не последует вашей идее –

+0

Я не очень опытен в PHP, но почему бы и нет? – Condorcho

+0

, потому что соединение должно быть открыто один раз. –