Domanda

Da quello che posso vedere Gearman non supporta processi pianificati o posti di lavoro in ritardo. Stavo pensando che forse il processo pianificato potrebbe essere messo in coda at prima e poi aggiunto alla coda Gearman dopo il periodo di tempo at è scaduto.

compiti at sono persistenti come sono scritti come file in una directory nella directory di spool del server. Quindi l'unico collo di bottiglia sarebbe potenzialmente un semplice script per aggiungere l'attività alla coda Gearman perché at non può essere distribuito tra i server. Passando a Gearman elaborare i mezzi reali di lavoro che posso ottenere una corretta registrazione dei lavori, ecc

E 'questo il modo migliore per affrontare questo ed avete qualche idea alternativa?

La ragione per cui ho optato per Gearman rispetto ad altre soluzioni di coda è che ha un'estensione di PHP.

Il codice che scrivo viene utilizzato per mantenere una coda di messaggi di posta elettronica che hanno bisogno di essere inviato. Così che io possa indicare che voglio inviare una mail a example@example.org alle 9.50 il Venerdì, per esempio.

È stato utile?

Soluzione

ho deciso di andare via at come originariamente disposto nella mia interrogazione. Ai fini ho scritto un po 'involucro PHP per il binario at e testato su Ubuntu. Se siete interessati si può trovare su github: http://github.com / Treffynnon / PHP-at-Job-Queue-Wrapper

Altri suggerimenti

Una soluzione piuttosto hacky, che solo funzionano bene con risoluzione oraria o giornaliera sarebbe quello di rendere il nome del lavoro (funzione) contiene la data in cui si voleva inviato. Poi hanno lavoratori a partire dal cron ogni ora o giorno per registrarsi per quei posti di lavoro.

Per esempio, se si desidera inviare una mail a 09:00 il Lunedi 12 Marzo 2012, aggiungere un lavoro sulla coda con un nome come email_2012-03-12_09: 00 . Poi avere un lavoro cron in esecuzione ogni ora, che gestisce un lavoratore che si registra per tutti i lavori corrispondenti e-mail _ + data e l'ora corrente.

Come ho detto, probabilmente praticabile, ma piuttosto hacky!

UPDATE 1: Ho visto di recente che la documentazione per banca dati gearmand persistenza ora citare un campo denominato when_to_run , che è un INT , e potrebbe potenzialmente contenere un'epoca timestamp unix. Questo campo non sembra essere fatto riferimento nel codice ancora.

Se si sta utilizzando Zend ...

  

SlmQueue è un livello di lavoro coda di astrazione. Esso consente di utilizzare facilmente i sistemi di coda dei lavori in un 2 applicazione Zend Framework. In tal modo non applica specificamente utilizzato per un tipo di coda. È possibile scrivere il codice e l'occupazione indipendente dal sistema sottostante. Ciò consente una grande flessibilità e disaccoppiamento dei sistemi.

https://github.com/juriansluiman/SlmQueue

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top