Node.js richiede VS richieste PHP

0

Ho scritto in PHP prima e quando un utente si è connesso ricevono una singola istanza del codice che viene poi chiusa quando il codice ha terminato l'esecuzione.

Nel nodo, ho impostato il mio primo server su console.log ("hi") su ogni richiesta. Quando mi sono aggiornato, non mi aspettavo che il "ciao" fosse di nuovo loggato, ma lo è stato - ottengo il suo essere registrato due volte a causa del browser che cerca una favicon.

Questo è uno dei modi in cui il nodo si comporta in modo diverso da linguaggi come PHP? Ogni utente che si connette al server condivide questo - come dovrei chiamarlo - istanza, in una volta? Se imposto var IP = *users IP* verrebbe sovrascritto dal prossimo utente?

Modifica: si tratta di un'istanza diversa, ma la console non lo indica e lo stampa subito sotto? --- Ho aggiunto un contatore "I" e l'ho incrementato su ogni richiesta e il valore registrato per I è aumentato, quindi deve essere la stessa istanza.

    
posta Tobi 15.06.2016 - 00:45
fonte

1 risposta

1

PHP è un linguaggio di programmazione. Usi un server web come Apache per gestire le richieste HTTP e, in base alle tue impostazioni, il tuo server web esegue PHP in background.

Node.js è un ambiente per l'esecuzione di JavaScript. JavaScript è il linguaggio di programmazione su cui stai costruendo le tue cose. Qui Node.js è il tuo server web che gestisce le richieste HTTP.

Node.js non crea un nuovo processo per gestire ogni richiesta; Ecco perché vedi tutte le uscite in un unico posto. Carica il tuo file una volta e poi serve tutti gli utenti con lo stesso codice.

In PHP, verrà utilizzata una nuova copia del file (dalla cache o dal disco) per servire ogni richiesta, il che significa reinizializzare tutto, comprese le variabili, ecc.

In JavaScript, questo codice manterrà solo l'ultimo valore assegnato ad esso:

var ip = req.ip;

// or...

function setIP ( ip ) {
    this.ip = ip;
};

setIP( req.ip );

Se vuoi mantenere l'indirizzo IP di ogni singolo utente, dovresti farlo in questo modo:

function User ( ip ) {
    this.ip = ip;
};

var user = new User( req.ip );

o

function User ( ip ) {
    var ip = ip;
}

var user = User( req.ip );

Dovresti creare una nuova istanza utente ogni volta che gestisci una richiesta nuova . Non può essere una variabile globale / oggetto, o il valore sarà sostituito ogni volta che gestisci una nuova richiesta.

(Questi sono solo esempi di snippet per dimostrare il punto)

    
risposta data 15.06.2016 - 09:46
fonte

Leggi altre domande sui tag