- Home
- Categorie
- Coding e Sistemistica
- PHP
- oggetti in pagine diverse?
-
Si, così puoi fare una cosa del genere:
$db = new MySQL("host", ...);
quando istanzio l'oggetto viene aperta la connessione e quando cambio pagina viene chiusa? -> SI
Oppure la connessione la crei in un metodo separato.
$db = new MySQL();
$db->connect("host", ...);A te la scelta.
Ciao!
-
uhm... ci rifletterò: devo capire se conviene aprire e chiudere subito dopo la singola operazione o lasciarla aperta fino alla chiusure della pagina... non c'è qualche rischio lasciando aperto?
-
Quando un utente richiede la pagina, il server web preleva la pagina dalla memoria.
Trovando l'estensione php, la passa all'interprete php che genera il codice html.
Infine il codice html viene spedito al browser del cliente.
Quindi, il tempo di esecuzione dello script php è diverso dal tenere aperta la pagina sul browser.
La connessione sql viene fatta da server web a server mysql e non dal browser del cliente verso il server mysql.
-
questo significa che quando l'interprete fornisce l'html che ha prodotto al server, lo script è concluso quindi la connessione è già automaticamente chiusa anche senza inserire un mysql_close();?:?
-
Se non inserisci mysql_close() la connessione, per motivi di sicurezza, viene terminata poco dopo l'elaborazione, mentre se lo inserisci viene chiusa all'atto dell'interpretazione della funzione.
Comunque, una volta generato l'intero codice html, l'esecuzione è terminata, così come viene interrotta la connessione con il server web, che a sua volta interrompe la connessione con il server sql.
-
ok grazie mille!
-
Prego!
-
ah un'altra domanda! se ho```
<?php//istanzio la classe db che col costruttore effettua la connessione
$db= new db();
//query varie poi NON faccio la chiusura di connessione//istanzio la classe user,per funzioni sue effettua anch'essa una connessione ma non con la classe db (supponiamo)
$user=new $user();
$user->metodo();
?>come agisce in questi casi il server?
-
Al termine dell'esecuzione dello script, tutte le connessioni vengono chiuse automaticamente.
-
però lascio una connessione aperta e, all'interno dello stesso script, rientro creando una nuova connessione... no crea qualche tipo di conflitto?
-
...e un errore mi è capitato che non capisco...
PAGINE:- pippo.php (pagina che carico),
- db.php (contiene la classe per il database),
- squadra.php(contiene la classe per gestire la squadra dell'utente);
pippo.php contiene un "include(db.php);" in quanto ho bisogno di usare l'oggetto e anche squadra.php ha un include uguale perchè alcune funzioni accedono al db: purtroppo mi da errore in db.php dicendo che non posso replicare l'oggetto. Ho provato a togliere tutti i riferimenti all'oggetto ma basta l'include a causare l'errore...:?
-
Usa include_once al posto di include, così non fa di nuovo l'include se lo ha già fatto.
-
@owen said:però lascio una connessione aperta e, all'interno dello stesso script, rientro creando una nuova connessione... no crea qualche tipo di conflitto?
e questo esempio si può fare senza causare dei problemi?
-
Io a seconda dei casi cerco di strutturarmi gli script in modo tale da effettuare la connessione una volta sola, oppure aprire e chiudere nello stesso contesto ogni connessione.
Comunque in teoria non dovrebbe creare conflitti.E' come se io e te accedessimo allo stesso database, nello stesso momento, utilizzando lo stesso user: mysql lo permette.
Certo che se riesci a strutturare lo script per connetterti una volta sola è meglio e velocizzi anche il tutto...