Accessi multipli allo stesso PHP

Indirizzo

Nuovo Utente
20 Ago 2014
18
0
0
Buongiorno a tutti. Come ho scritto poco fa nella sezione di presentazione, ho molto da imparare (l'avreste comunque capito dalle domande che sto per fare :)) ma la volontà non manca.

A livello di programmazione ho esperienze con C/C++, mentre "lato WEB server" sono praticamente a digiuno.
E siccome sono a digiuno, ho iniziato con lo studiare il PHP e, per il momento, non ho ancora affrontato MySQL perchè non voglio confondermi più di tanto, e quindi faccio uso di semplici file di testo per la lettura/scrittura.

Così ho iniziato a scrivere un programma in PHP che legge alcuni dati del visitatore (da un form di input in html), poi esegue alcuni semplici calcoli e infine scrive i risultati in un file di output (ovviamente residente sul server).

Quello che mi piacerebbe capire è cosa succede quando 100 visitatori del mio futuro sito (lo so, sono ottimista :)) accedono allo stesso tempo al mio programmino PHP. Mi spiego meglio: si creano dei conflitti (ad esempio nell'apertura o nella scrittura contemporanea del suddetto file di output), ci sono rallentamenti del programma PHP? Se le risposte a queste domande è "sì" mi piacerebbe capire quali accorgimenti si devono adottare per evitare questi problemi.

Grazie per eventuali risposte.
 
Si usa mysql per salvare i dati, non file di testo. Mysql non é difficilissimo.

Inviato con Tapatalk Free da Android
 
Grazie per la risposta Night Assassin, ma molto probabilmente ho esposto male la mia domanda che non era tanto centrata sull'uso di file o di MySQL (per il quale ho visto che qui c'è un ottimo corso).

La mia domanda intendeva chiedere se vi sono dei cali di prestazioni (ossia dei rallentamenti di accesso al sito) legati all'accesso da parte di tanti visitatori e, in caso affermativo, quali contromisure adottare. In altre parole intendevo chiedere quanto segue:

- Esiste un numero massimo di connessioni ad un file o al database mysql ? Ad esempio, se in più pagine del mio sito faccio la connessione al database con le rispettive query, si può mantenere costantemente aperta la connessione al databse per evitare tempi per la connessione al database se il sito è visitato da decine di utenti?

- Esistono dei limiti del DB, che ne so, query all'ora, la dimensione massima che è quella dei normali file...

- Come dicevo nella mia domanda iniziale, se cento utenti accedono contemporaneamente al database, ci sarà un tempo di connessione al database per ogni utente prima di effettuare le query? Supponiamo che per una connessione al database ci vuole 1 secondo, il centesimo utente, in ordine cronologico, che accede dovrà aspettare 100 secondi? Oppure ogni utente aspetterà solo un secondo?

- infine: database a parte, il mio povero programmino in PHP, se viene eseguito contemporaneamente da 100 visitatori, come si comporta?

Grazie ancora a chi vorrà rispondermi.
 
La mia domanda intendeva chiedere se vi sono dei cali di prestazioni (ossia dei rallentamenti di accesso al sito) legati all'accesso da parte di tanti visitatori

Tanti visitatori è relativo sempre alla tua applicazione, possono essere un migliaio come diecimila utenti.
In generale si, l'aumento di accessi al sito porta a richiedere risorse sempre maggiori al server e quando questi è in procinto di saturarle inizi a riscontrare dei rallentamenti in generale.

- Esiste un numero massimo di connessioni ad un file o al database mysql ?
Per il file no, ma sarai costretto ad applicare un lock su di esso per evitare che richieste simultanee possano corromperlo.
Introdurre un lock sicuramente anche con un numero non eccessivo di visualizzatori ti porta al punto in cui qualcun altro non potrà leggere la risorsa perché già in uso.

Ad esempio, se in più pagine del mio sito faccio la connessione al database con le rispettive query, si può mantenere costantemente aperta la connessione al databse per evitare tempi per la connessione al database se il sito è visitato da decine di utenti?
Si può mantenere una connessione perennemente aperta al database mysql, ma è una pratica che sconsiglio.
In un contesto normale rischia di fare più danni che altro: MySql di default permette fino a 100 connessioni simultanee (a seconda del tuo hosting provider questo limite può essere più o meno elevato).

- Come dicevo nella mia domanda iniziale, se cento utenti accedono contemporaneamente al database, ci sarà un tempo di connessione al database per ogni utente prima di effettuare le query? Supponiamo che per una connessione al database ci vuole 1 secondo, il centesimo utente, in ordine cronologico, che accede dovrà aspettare 100 secondi? Oppure ogni utente aspetterà solo un secondo?
No, ogni accesso è indipendente dall'altro, l'unico caso in cui un utente dovrà aspettare è quando le risorse del server vengono saturate.
Inoltre 1 secondo di connessione è un tempo enorme, la rapidità media della connessione e dell'esecuzione di una query si attesta nell'ordine dei millisecondi. Con questi presupposti puoi capire quanto sia difficile produrre anche solo 100 connessioni simultanee al database, perché quando un utente accede è quasi certo che altri abbiano già concluso.
Questo giochetto ti permette di non avere problemi anche con 3-4000 visitatori online sul sito se le tue pagine non sono particolarmente lente in esecuzione.

- Esistono dei limiti del DB, che ne so, query all'ora, la dimensione massima che è quella dei normali file...
Sono limitazioni che in genere include il provider: alcuni limitano lo spazio che puoi utilizzare mentre altri ti limitano il numero di operazioni che puoi fare a livello di query.
Ti tocca informarti bene presso dove hai acquistato lo spazio per l'hosting (o dove intendi farlo).

- infine: database a parte, il mio povero programmino in PHP, se viene eseguito contemporaneamente da 100 visitatori, come si comporta?
Si comporta normalmente con tutti, semplicemente occuperà un po di spazio nella RAM del server fino a quando l'esecuzione non termina, se il tuo script consuma parecchie risorse in questi termini raggiungerà più facilmente il punto di saturazione delle stesse.

Comunque, se inizi ad avere un traffico consistente, di anche un migliaio di visitatori nell'arco di un ora oltre alle misure di ottimizzazione dovresti prendere in considerazione l'uso di sistemi di caching server side.
 
Ultima modifica:
Flameseeker, ti ringrazio moltissimo per la puntuale ed esauriente spiegazione.
Ora, tutto mi è molto più chiaro e posso procedere nello studio (e sperimentazione) di PHP.
Ho anche iniziato a studiarmi e MySQL, perchè ho compreso l'intimo legame tra i due.
Alla prossima!
 

Discussioni simili