Domanda

Sono totalmente nuovo nell'argomento dei cron job, quindi non ho idea di dove iniziare a conoscerli; quando, perché o come usarli con la mia applicazione Zend Framework o PHP in generale.

Qualcuno può spiegare il processo, con un esempio, o raccomandare alcune buone risorse per iniziare?

È stato utile?

Soluzione

Cron jobs è un meccanismo per automatizzare le attività nel sistema operativo Linux. E ha ben poco da fare con Zend Framework. Il framework può aiutarti a sviluppare un'attività cron avanzata in php. Ma poi dovrai impostare il tuo cron job nella shell.

Googling per " come impostare cron job " ha rivelato questo link in alto:

http://www.adminschoice.com/docs/crontab.htm

Sono sicuro che questo articolo ti aiuterà.

P.S.

Come comando da eseguire dovresti inserire qualcosa come:

/usr/local/bin/php -f <path_to_your_php_script>

dove il primo percorso è il percorso completo dell'eseguibile php cli, che può differire sul tuo computer. Puoi assicurarti emettendo questo comando:

which php

Buona fortuna con cron jobs;)

Altri suggerimenti

Dato che Zend Framework è una raccolta di componenti accoppiati in qualche modo, puoi usare i componenti che ti piacciono in ogni script PHP inclusi gli script CLI. Dovrai assicurarti, tuttavia, che PHP possa trovare le classi Zend Framework pertinenti, quindi devi aggiungere il percorso della libreria Zend Framework al tuo include_path. Quindi è possibile impostare il caricamento automatico utilizzando Zend_Loader_Autoloader (ZF & Gt; = 1.8) o Zend_Loader (ZF & Lt; 1.8) per semplificare la vita. Ora dovresti avere accesso a tutti i componenti di Zend Framework che puoi usare a piacimento.

Come ogni altro script o programma, questo script PHP può essere usato naturalmente in un cron job. Un'altra cosa da notare è che dovrai assicurarti che l'utente che esegue i tuoi lavori cron abbia accesso in lettura al percorso della libreria di Zend Framework, altrimenti PHP non può leggere i file di Zend Framework.

Se la tua domanda era mirata sull'uso del componente MVC negli script CLI, devo ammettere che non ho alcuna esperienza in merito. Suppongo che si debba compiere uno sforzo non trascurabile per attuare le classi di richiesta, risposta, distpachter e route appropriate.

Modifica

Consulta questo articolo per ulteriori informazioni.

Forse un esempio di vita reale sarebbe di aiuto. Alcuni anni fa, ho lavorato a un progetto di calendario degli eventi utilizzando Zend Framework. In questo calendario, un utente può creare un evento e allegare 1 o più date all'evento. Naturalmente, ho implementato questo come un join multiplo nel mio database, ma ciò significava che, per allegare una data, l'evento doveva esistere prima. Tuttavia, volevo consentire agli utenti di aggiungere le date mentre stavano creando l'evento, non dopo che avevano creato un evento. In altre parole, volevo che l'utente modificasse tutti gli aspetti di un evento contemporaneamente e lo inviassi solo quando hanno fatto clic su & Quot; save. & Quot;

Ho risolto il problema inserendo un nuovo record di eventi vuoto nel database quando l'utente inizia a creare un record di eventi. Questo record vuoto viene compilato e salvato quando l'utente fa clic su & Quot; salva & Quot; oppure viene eliminato quando l'utente fa clic su & Quot; annulla & Quot ;. Il problema si verificava quando gli utenti si allontanavano senza fare clic su & Quot; cancel & Quot; e il record dell'evento vuoto veniva lasciato nel database. Alla fine, il database si riempirebbe di questi eventi vuoti senza significato e le cose potrebbero diventare brutte.

Ho scritto una funzione chiamata " maintenance () " ;, che, tra le altre cose, ha eliminato tutti i record non salvati di età superiore a 24 ore. Ho impostato un lavoro cron che veniva eseguito di notte ed eseguito uno script php a riga di comando che eseguiva manutenzione ().

Altre cose per le quali potresti usare un lavoro cron:

  • Invia un batch di e-mail ai nuovi utenti. (ogni 5 minuti?)
  • Aggiorna le statistiche utente (ogni ora?)
  • Esegui operazioni ad alta intensità di risorse quando i server non sono bloccati dal traffico (ogni notte a mezzanotte o una volta alla settimana la domenica sera?)
  • Qualsiasi altro evento che non si verifica in risposta a una richiesta dell'utente (ciò che Jeff chiama " out of band ").

potresti anche essere interessato a come memorizzare i lavori cron con ZF

Ecco un link a un buon modo di fare la tua implosione di un sistema cron con Zend Framework:

Attività Cron nelle app Zend Framework

Personnaly, l'ho adattato in modo che il parametro possa essere dinamico, ma la base è la stessa :-)

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