Web server dormiente?

0

Esistono lingue o server che invece di eseguire uno script al caricamento della pagina, (Apache / PHP, Ruby on Rails, ...) mantengono il codice caricato e in esecuzione per sempre e quando riceve una connessione chiama una funzione di quel codice? (Come un evento PageLoad in sostanza?)

In realtà non sapevo come chiamarlo così sono andato su Passive Web Server perché il codice sta praticamente dormendo fino a quando si verifica un evento, invece che completamente scaricato o semplicemente memorizzato nella cache.

    
posta Jeroen Bollen 03.09.2013 - 22:12
fonte

3 risposte

3

PHP e gli script eseguiti tramite CGI (non FastCGI) riguardano solo le cose che funzionano in questo modo. Quasi tutto il resto ha un processo di lunga durata che esegue & risponde alle richieste. Una tipica applicazione Web avrà un server statico (Apache, Nginx ...) davanti, gestendo direttamente le richieste dei client. Per i file statici (Javascript, CSS e così via), invierà semplicemente il file; per le cose che richiedono la tua app per rispondere, passerà la richiesta alla tua applicazione & quindi inoltra la risposta al client.

Un esempio potrebbe essere una semplice installazione Python / Django. Abbiamo Apache in esecuzione sul server. Come parte della nostra configurazione di Apache, stiamo eseguendo mod_wsgi . Il modulo mod_wsgi consente ad Apache di attivare un numero di interpreti Python con lavori a esecuzione prolungata. Quando arriva una richiesta, Apache vede che dovrebbe andare su Python & passa la richiesta a mod_wsgi e mod_wsgi passa la richiesta al tuo già caricato & esecuzione dell'applicazione Django.

Un altro esempio potrebbe essere un'applicazione di Ruby on Rails in esecuzione dietro Nginx e Mongrel. Mongrel è un server web che consente di vivere le applicazioni di Ruby all'interno di esso. È davvero bravo a pubblicare pagine dinamiche, ma è un po 'lento nelle cose statiche, quindi abbiamo configurato Nginx per questo. Nginx serve il contenuto statico (come Apache ha fatto nell'ultimo esempio) ma ogni volta che una richiesta per una delle pagine dinamiche arriva, Nginx agisce semplicemente come un proxy e inoltra la richiesta a Mongrel.

C'è una piccola differenza tra i due casi, ma non vale la pena di approfondire a meno che tu non stia gestendo l'architettura del server per un sito web con volumi elevati.

Una terza installazione arriva con Node.js. Con Node, il server web è la tua applicazione.

    
risposta data 04.09.2013 - 01:14
fonte
1

Gli script Node.js di solito funzionano in questo modo. Agiscono come un proprio server web, essenzialmente, ma sono un singolo processo che rimane caricato tra le richieste dei client. Questo è il motivo per cui è così bravo nella comunicazione "in tempo reale": può impilare e gestire più connessioni e trasmettere dati tra di loro.

    
risposta data 03.09.2013 - 22:30
fonte
0

Python attraverso WSGI con Apache rimane caricato. Framework come Django indirizzano la chiamata al modulo / classe appropriato.

    
risposta data 03.09.2013 - 22:31
fonte

Leggi altre domande sui tag