What happens if multiple users send requests to the server concurrently?
Dipende da ciò che le richieste fanno . Se sono solo letti, non succede nulla. Se sono, ad esempio, contatori incrementali o variabili, allora Alice potrebbe inviare "SET x = 15" mentre Bob invia "SET x = 42" e Alice potrebbe pensare x è impostato su 15 mentre in realtà è impostato su 42. In scenari complessi in cui i dati vengono poi riutilizzati per i calcoli e l'errore potrebbe accelerare rapidamente, questo è molto cattivo e lo si evita con diverse cosiddette strategie di blocco .
Is that important to prevent that? (Make the users fill in all the inputs before sending the requests)
Ciò è sicuramente vantaggioso: assicurati che il minor numero possibile di dati nel minor numero possibile di chiamate sia soggetto a rallentamenti della rete. Quindi, fai anche tutti i controlli che puoi sul lato client. Ma mantieni il controllo anche sul lato server, poiché i client non devono mai essere considerati attendibili.
How can i know if the server can handle those requests based on the concurrent users?
Test. Usi strumenti come ab o link di Apache o Casper-Load o altro.
What type of testing is the reduction of those http requests?
Suppongo che potresti chiamarlo efficienza , ma è una metrica e non un test, e tuttavia devi anche ricordare che stai cercando un trade-off; è necessario bilanciare lo sforzo di sviluppo, la manutenibilità, l'espandibilità, le prestazioni e l'integrità dei dati. Non esiste sicuramente una soluzione valida per tutti, devi verificare quali sono i tuoi requisiti di progettazione.
Aggiornamento basato sui commenti
Actually, my project accepts inputs from the users and sends them to PHP for validation
Allora forse la maggior parte dei problemi scompare. Se la "validazione" è completamente definita dalla richiesta dell'utente e tutti gli utenti hanno un singolo accesso ciascuno, non accadrà mai che la richiesta di un utente può interferire logicamente con quella di un altro.
Potrebbero esserci conflitti di risorse (ad esempio, una convalida impiega 2 secondi di CPU al 100%, quindi non si desidera più di una richiesta ogni 2 secondi, o il server resterebbe indietro). Puoi rendere questo un problema di UX creando un "ticket service" con il quale "prenota" rapidamente un ticket e il server prenota la tua validazione per, diciamo, da 60 secondi a partire da ora. Il codice cliente è quindi costretto ad attendere (visualizzando un conto alla rovescia) e inviare la richiesta solo un minuto dopo.
Altrimenti, non hai bisogno di "difese" speciali - i thread PHP risponderanno ognuno al proprio richiedente, il protocollo HTTP si prenderà cura di questo.
How could i prevent PHP from sending a response if a validation is wrong?
Non devi . invia sempre una risposta, devi solo dire "OK" o "Sbagliato". Se non si invia la risposta, il client rimane sospeso e l'utente insoddisfatto. Se non è possibile eseguire la convalida, si invia un codice di errore HTTP che indica perché è così (40X per errore utente, 50X per errori server).