2011-09-12 15 views
5

Sto cercando un gestore code di lavoro in node.js che può essere richiamato da php. Questo è per un'applicazione web che ha bisogno di inviare e-mail, creare file PDF e così via su cui mi piacerebbe eseguire asincroni del processo php.Coda lavori in node.js

esempio del processo: richiede

  1. utente una pagina PHP
  2. Php invoca il gestore code lavoro e aggiunge un compito
  3. Task viene eseguito in modo asincrono node.js di php, preferibilmente quando è un po 'più tranquillo
  4. compito è quello di eseguire uno script php

Perché questo sistema "complesso"?

  1. Scriviamo tutti i nostri web-applicazioni in PHP (Zend Framework)
  2. Vorremmo iniziare ad imparare node.js
  3. Abbiamo bisogno di un processo asincrono (risposta veloce!)
  4. Il " vero compito" dovrebbe essere uno script php così, di utilizzare classi PHP già scritto, di avere un facile accesso alle connessioni al database e di essere il più asciutto possibile

I casi d'uso di questo sistema:

  1. utente registra se stesso, il sistema invia un'email di benvenuto
  2. completa dell'utente ordine e-commerce, il sistema invierà fattura

Alla fine, vorremmo utilizzare il nodo-cron pure, per eseguire attività cron non di sistema (molto specifiche dell'applicazione). Node-cron invocherà il queue manager dei lavori, che successivamente eseguirà uno script php.

Esiste già un'applicazione nel nodo?

risposta

0

Una possibile opzione è node-jobs, che utilizza Redis.

+0

Redis è un'installazione a livello di sistema. Come potremmo essere in grado di rendere i job del nodo (che spero possano funzionare su una base applicativa) utilizzare redis per applicazione? O dovremmo semplificare questo facendo il prefisso di tutti i lavori con il nome dell'applicazione (probabilmente un TLD inverso)? –

+1

Probabilmente un prefisso avrebbe funzionato: il reverse TLD è un trucco perfetto. – Femi

2

In tal caso preferirei una coda di messaggi come RabbitMQ e librerie lato client come node-amqp e php-amqp. Quindi invia semplicemente il tuo lavoro dallo script PHP in coda e lascia che nodejs riprenda il lavoro dalla coda. Un grande vantaggio è che è estensibile ed è ampiamente utilizzato e testato nel mercato enterprise.

+1

Perché dovresti usare uno strumento del genere per questa configurazione? Sembra che potrebbe funzionare, ma eccessivamente ingegnerizzato per questo obiettivo. I test approfonditi e pronti per il mercato aziendale sono ovviamente dei vantaggi, ma la facilità d'uso e la semplicità contano anche come imho. –

+0

RabbitMQ è ben documentato, indipendente dalla lingua (oggi è nodejs il giorno dopo python, ruby, java?), Community attiva. Perchè la semplicità è sempre bella, ma scelgo le mie tecnologie anche dall'attività del progetto. – malte

Problemi correlati