PDA

View Full Version : [PHP] 2 domande sul funzionamento del motore PHP


AMD_GO
15-11-2010, 11:32
salve ragazzi, avrei due domande che riguardano il funzionamento del motore php, di come cioè vengono gestite le richieste dei client.

1) mettiamo il caso che venga richiesta pagina.php che contiene, ad esempio, 10 query ad un db. Supponiamo che queste query richiedano 1 sec l'una per essere eseguita. se l'utente blocca il caricamento del browser a metà esecuzione (mettiamo, durante l'esecuzione della sesta query), le query vengono cmq eseguite tutte e 10?
Mi autorispondo e vorrei una conferma: si, vengono eseguite, solamente che la risposta non viene inviata all'utente...

2) come viene gestita la sincronizzazione in caso di richiesta da parte di diversi utenti della stessa pagina.php? Mi spiego meglio....in che ordine vengono eseguite le query di diversi utenti? mettiamo che io sia il primo utente a richiedere pagina.php: le mie 10 query vengono eseguite per prime in esclusiva dalla 1 fino alla 10, anche se nel frattempo un'altro utente richiede pagina.php?
Mi autorispondo anche qui: si...

spero di essermi spiegato...tuttavia vorrei qualche delucidazione se qualche concetto non mi è chiaro....

Grazie a tutti!!!!!

kyxzme
15-11-2010, 12:02
salve ragazzi, avrei due domande che riguardano il funzionamento del motore php, di come cioè vengono gestite le richieste dei client.

1) mettiamo il caso che venga richiesta pagina.php che contiene, ad esempio, 10 query ad un db. Supponiamo che queste query richiedano 1 sec l'una per essere eseguita. se l'utente blocca il caricamento del browser a metà esecuzione (mettiamo, durante l'esecuzione della sesta query), le query vengono cmq eseguite tutte e 10?
Mi autorispondo e vorrei una conferma: si, vengono eseguite, solamente che la risposta non viene inviata all'utente...

2) come viene gestita la sincronizzazione in caso di richiesta da parte di diversi utenti della stessa pagina.php? Mi spiego meglio....in che ordine vengono eseguite le query di diversi utenti? mettiamo che io sia il primo utente a richiedere pagina.php: le mie 10 query vengono eseguite per prime in esclusiva dalla 1 fino alla 10, anche se nel frattempo un'altro utente richiede pagina.php?
Mi autorispondo anche qui: si...

spero di essermi spiegato...tuttavia vorrei qualche delucidazione se qualche concetto non mi è chiaro....

Grazie a tutti!!!!!

Io ho scritto qualcosa sull'engine PHP, vedi se ti è utile

http://www.facebook.com/note.php?note_id=123339891050911
http://www.facebook.com/note.php?note_id=123327767718790
http://www.facebook.com/note.php?note_id=125113857540181

AMD_GO
15-11-2010, 14:08
ciao! innanzitutto grazie per la risposta...ho letto quello che hai scritto, specialmente questo

- Chiamate a MINIT


-- Inizio richiesta
--- Chiamate a RINIT
--- Esecuzione script
--- Chiamate a RSHUTDOWN
-- Fine richiesta


-- Inizio richiesta
--- Chiamate a RINIT
--- Esecuzione script
--- Chiamate a RSHUTDOWN
-- Fine richiesta


-- Inizio richiesta
--- Chiamate a RINIT
--- Esecuzione script
--- Chiamate a RSHUTDOWN
-- Fine richiesta


- Chiamate a MSHUTDOWN

Quando leggo "Esecuzione script" suppongo che la richiesta sia inoltrata, indifferentemente, dalla stessa macchina o da macchine diverse. Però volevo sapere se, essendoci la possibilità di un calcolo parallelo, ad ogni inizio richiesta segua anche una fase di lock delle risorse oppure no. Cioè, che succede se uno script si blocca???

spiego meglio qual'è il mio interrogativo...se io eseguo, in uno script php, 50 volte una query con una select su una tabella A, supponendo che questa tabella possa venire aggiornata da altri script (eseguiti anche da altre macchine), è possibile che i 50 risultati possano non essere tutti uguali???

kyxzme
15-11-2010, 14:19
ciao! innanzitutto grazie per la risposta...ho letto quello che hai scritto, specialmente questo

- Chiamate a MINIT


-- Inizio richiesta
--- Chiamate a RINIT
--- Esecuzione script
--- Chiamate a RSHUTDOWN
-- Fine richiesta


-- Inizio richiesta
--- Chiamate a RINIT
--- Esecuzione script
--- Chiamate a RSHUTDOWN
-- Fine richiesta


-- Inizio richiesta
--- Chiamate a RINIT
--- Esecuzione script
--- Chiamate a RSHUTDOWN
-- Fine richiesta


- Chiamate a MSHUTDOWN

Quando leggo "Esecuzione script" suppongo che la richiesta sia inoltrata, indifferentemente, dalla stessa macchina o da macchine diverse. Però volevo sapere se, essendoci la possibilità di un calcolo parallelo, ad ogni inizio richiesta segua anche una fase di lock delle risorse oppure no. Cioè, che succede se uno script si blocca???

spiego meglio qual'è il mio interrogativo...se io eseguo, in uno script php, 50 volte una query con una select su una tabella A, supponendo che questa tabella possa venire aggiornata da altri script (eseguiti anche da altre macchine), è possibile che i 50 risultati possano non essere tutti uguali???

Se uno script va in errore dopo aver eseguito il lock di una risorsa a meno di non far gestire l'eccezione e liberare la risorsa per le altre chiamate c'è un blocco delle richieste

Potresti usare la direttiva LOCK TABLE se presente nel tuo RDBMS e far sì che le richieste non vadano a sovrascrivere dati mentre sono in uso da altri script

AMD_GO
15-11-2010, 17:03
Se uno script va in errore dopo aver eseguito il lock di una risorsa a meno di non far gestire l'eccezione e liberare la risorsa per le altre chiamate c'è un blocco delle richieste

giustamente...e qui c'ero arrivato..

Potresti usare la direttiva LOCK TABLE se presente nel tuo RDBMS e far sì che le richieste non vadano a sovrascrivere dati mentre sono in uso da altri script

buonanotte...non lo sapevo, anche perchè non ho ancora visto le transazioni e tutta la parte relativa...quindi me le studio...

Ti ringrazio, sei stato davvero d'aiuto....GRAZIE!!!!!!!!!!!!