Nie jestem niczym programista PHP, ale muszę go używać i nie mam pojęcia, jak PHP obsługuje przydzielanie pamięci podczas sesji.Kiedy należy zamknąć połączenie z bazą danych w PHP?
Pracuję nad aplikacją, która żąda uwierzytelnienia HTTP. Po zalogowaniu można manipulować danymi za pomocą ładnego interfejsu.
Ktoś powiedział mi w innym poście, że nie powinienem zamykać połączenia danych mysql po każdym wykonaniu, ale nie wiem, jak to połączenie pozostaje w pamięci podczas korzystania z tej aplikacji, ponieważ po stronie serwera nie mam pojęcia, co PHP trzyma w pamięci lub nie.
Moje pytanie brzmi: powinienem użyć singletonu, aby połączyć się z bazą danych i nigdy go nie zamykać (ponieważ nigdy nie dowiem się, kiedy aplikacja nie jest używana) lub powinienem stanąć z tym, co robię dzisiaj: otwarcie połączenia - > wykonanie oświadczenie -> ścisły związek
. PS: Używam mysqli
Edycja 1:
Moja aplikacja jest konstrukcja z MVC wzór znaczenie:
|''''''''''| |'''''''''''''| |''''''''''''''|
| view.php | ==> | control.php | ==> | database.php |
|----------| |_____________| |______________|
Ten wzorzec umożliwia widokowi interakcję z danymi tylko za pośrednictwem control.php
, które następnie wywołują funkcję z danych database.php do SELECT
lub danych. z wyjaśnieniem mi dasz, należy umieścić:
public function __destruct(){
mysql_close($this->connection);
}
wewnątrz database.php
, ale ta strona jest obciążenie, gdy pojawia się potrzeba, aby wybrać lub zmodyfikować dane, więc jest wykonywany tylko przez krótki czas, co oznacza, że będzie nadal blisko połączenie na końcu żądania.
Które daje bardziej precyzyjne pytanie, gdzie powinienem umieścić spokój kodu, który podasz, czy mój wzorzec jest istotny w PHP?
to destruktor klasy zarządzającej bazą danych, zobacz: http://stackoverflow.com/questions/2129162/how-do-you-efficiently-connect-to-mysql -in-php-without-reconnecting-on-every-que –
to dlatego, że w schemacie MVC CONTROL kontroluje VIEW i MODEL (baza danych). W twoim schemacie VIEW kontroluje CONTROL i MODEL.Jeśli kodujesz swój MVC we właściwy sposób, problem rozwiąże się automatycznie –
I tu jest problem, nie koduję obiektem, ponieważ tak naprawdę nie wiem jak to zrobić i nie mam czasu na konwersję aplikacji ani czas, aby dowiedzieć się, jak to działa. – Kiwy