Newsgroup: it.comp.www.php
Titolo: PHP e pool di connessioni

Volevo sapere se PHP permette di gestire un pool di connessioni ad un DB
(ossia che vengono aperte ad massimo un Tot di connessioni per non far
affaticare il database). E eventualmente dove posso trovare maggiori
informazioni a proposito.
E a questo punto mi viene un'altra domanda...il webserver (per esempio
I.I.S.) è multitread? Esegue più richieste contemporaneamente e quindi mi
apre N connessioni a seconda di quanti utenti provano ad accedere ad una
pagina Asp che fà uso di un DB?
E se uso una connessione permanente? Che succede? La connessione aperta è
sempre una qualunque sia il numero delle pagine che il webserver mi stà
eleborando?
Grazie
Gianni Moretti

Esattamente:
La connessione viene aperta alla connect/pconnect
Nel caso di "connessione permanente" alla fine dello script la connessione
verso il mysql rimane aperta.
Alla chiamata successiva pconnect viene preso il "moccolo" lasciato aperto
ed utilizzato.
Rimane aperto fino alla mysql_close()
La "connect" normale invece chiude la connessione quando finisce uno script
di essere eseguito.
Puoi facilmente gestire un pool di connessioni andando a scrivere quante
connessioni apri e quante ne chiudi un un file di testo. (modo scemo) o
limitare, nelle impostazioni di mysql, quante max_connections fare.
Ciao
J

Grazie per le informazioni...a me non interessano per il database MySQL
comunque il discorso è applicabile un pò a tutti i DB penso.
Però a questo punto mi vengono altre domande:
1) Posso anche aprire più connessioni permanenti?  (a questo punto penso di
si)
2) L'elaborazione delle pagine è multi-thread? Se così fosse il discorso di
leggere e scrivere in un file testo và a farsi friggere.
3) Se io utilizzo una sola stessa connessione permanente a cosa vado
incontro?
Ari-grazie
Gianni Moretti

verso il mysql rimane aperta.
Gia'. Solo che non sai se ti rispondera' lo stesso processo/thread, alla
chiamata successiva.
Sicche' dopo un po' hai tante connessioni permanenti impostate, quanti i
thread in azione.
(Su Linux, "apachectl graceful" termina i processi e le connessioni, poi
riparte piu' leggero che pria).
Leonardo
-- 
And where the black and corkscrew towers climb
Lost and athirst the ragged pack abides,
Old as the aeons, trapped in tombs of time,
Sailing the tortuous temporal tides...

 wrote in
news:W7jR7.282192$
sq5.13...@news.infostrada.it
: 

Non per ogni pagina non puoi aprire piu' connessioni permanenti.
La connessione permanente vive (rimane appesa) insieme al processo httpd 
che l'ha chiamata. L'elaborazione delle pagine e' multitread per 
eccellenza, perche' apache ad ogni richiesta o genera un nuovo processo o 
ne utilizza uno già esistente. Se tu setti che apache debba essere 
presente con 10 processi sempre attivi e dieci utenti aprono 
contemporaneamente una pagina php con una connessione permanente avrai 
dieci connessioni al db attive (una per ogni processo apache) e se sono 
permanenti rimarranno attive per per gestire altre richieste.
Se utilizzi una sola connessione permanente in una pagina, quando due 
utenti aprono contemporaneamente quella pagina se ne apriranno due di 
connessioni.
Sicuramente non sono stato molto chiaro ma ti consiglio di dare un 
occhiata al manuale di apache per capire come il server gestisce le 
richieste dei client. Il PHP spesso è compilato come modulo di apache, 
quindi ne eredita tutte le caratteristiche. Il concetto di Connection Pool 
è applicabile solo quando si ha un application Server come Tomcat che sia 
in grado di gestirlo. Cioè quando vi è un qualcosa lato server che sia 
sempre attivo (cioè in esecuzione). Il php si "attiva" solo quando una 
pagina viene richiesta da un client.
Spero di non aver detto qualche sciocchezza.