Codeigniter CLI: Eseguiamo lavori da linea di comando.

02 Nov 2019 | M.A.D.R.

Come tutti sapranno un framework che si rispetti mette a disposizione la CLI (command line interface), la quale permette di richiamare comandi più o meno complessi.

A cosa servono?

Per semplicità soffermiamoci solo ad alcuni principali utilizzi:

  • Schedulazione
  • Worker
  • Caricamento dati

Immaginiamo, in questo semplice caso, di dover caricare dei dati nel database per fare il boot della nostra applicazione, la linea di comando potrebbe essere la via più facile e sicura.

Codeigniter come si comporta?

Niente di straordinario, semplicemente dobbiamo creare un Controller che estende CI_Controller con almeno un metodo pubblico da poter richiamare da linea di comando.

Seguendo l'esempio sopra potremmo creare un Controller "Bootapp" con all'interno un metodo pubblico "load_db()", la sintassi risulta essere la seguente:

<?php
class Bootapp extends CI_Controller{
    public function __constructor(){
        parent::__contructor();
    }
    public function load_db(){
        //il nostro codice
    }
}

Nulla di complicato anzi, molto semplice e lineare così da non creare problemi a coloro che non sono addetti ai lavori.

Per richiamare da linea di comando:

$ cd /path/to/project;
$ php index.php bootapp load_db

Come possiamo notare è una sintassi tanto basilare quante brillante e semplice da usare.

Aspetti più complessi

Immaginiamo di dover eseguire un "lavoro" e/o "schedulazione" in determinate fasce orarie la CLI è la nostra ancora di salvezza in quanto verranno eseguiti i lavori in modo del tutto autonomo.

Un caso più concreto è l'invio massivo delle mail, infatti è impensabile inviare 100/200 email in modo sincrono, si potrebbe andare incontro ad un salto di rete, black out, timeout del server e così via...

In questo caso è buona norma memorizzare i parametri e/o il corpo email nel Database e richiamare in un task separato l'invio delle mail, così da scongiurare possibili anomalie.

In questo modo non dovremo inviare blocchi di 100/200 email simultaneamente ma attraverso uno scheduler potremo inviare ogni 5 minuti blocchi di 10/20 email così da non appesantire il nostro server.

NB: I 5 minuti e 10/20 email sono parametri che utilizzi normalmente e che sono quindi dettati dal buon senso e dalla gestione di più task e code.

Alcuni consigli

Sfruttare a pieno il framework significa "Capire", "Interpretare", "Implementare" e "Eseguire" nel modo più appropriato un determinato task, in questo caso ricordo che per buona norma e prassi si dovrebbe prevedere:

  • Una tabella nel DB per la memorizzazione dei lanci da CLI con esito (per es: true/false), l'orario e il task elaborato.
  • Prevedere un blocco per non accavallare i task ed i job
  • Separazione dei task e dei job (queue) così da avviare più processi in parallelo
  • Un log per i nostri task
  • Un advisor che effettui una sintesi giornaliera/settimanale/mensile in base alle proprie specifiche.

Codeigniter VS Laravel: chi vince la sfida?

02 Nov 2019 | M.A.D.R.

Oggi l'evoluzione dei linguaggi sono sempre più orientate verso la&nbsp;semplificazione del codice, l’ottimizzazione delle funzionalità e la velocità di esecuzione. Codeigniter il nonno di tutti i framework, riesce ancora a tener testa al gio...

Codeigniter Migration: Versioning Database

02 Nov 2019 | M.A.D.R.

Per “migration” s'intende le gestione delle varie versioni di un database. Grazie al concetto di migration possiamo effettuare tutte le operazioni sul database che abitualmente effetuiamo con strumenti come&nbsp;phpMyAdmin,&nbsp;Toad,&nbsp;MySQL...

Codeigniter CLI: Eseguiamo lavori da linea di comando.

02 Nov 2019 | M.A.D.R.

Come tutti sapranno un framework che si rispetti mette a disposizione la CLI (command line interface), la quale permette di richiamare comandi più o meno complessi. A cosa servono? Per semplicità soffermiamoci solo ad alcuni principali utili...

Codeigniter: Estendiamo il framework con gli HOOKS

02 Nov 2019 | M.A.D.R.

Spesso i dev hanno necessità di modificare il comportamento ed il flusso dell'applicazione, codeigniter mette a disposizione gli HOOKS. Lavorare con un framework, anche se molto semplice, spesso induce ad errori comuni e poco sicuri, basti pensa...

Codeigniter: Profilazione dell'applicazione

02 Nov 2019 | M.A.D.R.

Seguendo l'articolo del Banchmark, per completare le operazioni di performance del nostro codice, Codeigniter permette la creazione di una profilazione dettagliata dell'esecuzione del nostro codice. La classe Profiler visualizzerà i risultati de...

CodeIgniter: Analizziamo le performance del nostro codice

02 Nov 2019 | M.A.D.R.

Ogni programmatore ad un certo punto dello sviluppo del codice, ha necessità di analizzare le performance della propria applicazione/funzione/metodo, infatti CodeIgniter ha una classe di gestione Benchmark sempre attiva, che consente di calcolare ...

Codeigniter: Template Engine o Template Parser

02 Nov 2019 | M.A.D.R.

Salve a tutti, dopo aver commentato la funzione dei controller e dei model non resta che parlare delle view, o come meglio definiti Template Engine o Template Parser. Codeigniter non ha un vero e proprio Template Engine, ma sfrutta una classe nat...

Codeigniter: Interazione con i database

02 Nov 2019 | M.A.D.R.

Continuiamo questa piccola avventura: CodeIgniter può interagire con i database attraverso un model (ma non è obbligatorio) o attraverso un controller (altamente sconsigliato). Cosa significa interagire con un database? Possiamo recuperare ...

CodeIgniter: Flussi di funzionamento "Router"

02 Nov 2019 | M.A.D.R.

Quello che uno sviluppatore, abituato a interagire con i files php, deve capire la centralità del file index.php, ossia il cuore di un progetto Framework, ed in questo caso Codeigniter router. Non esistono altre pagine all’infuori di index.ph...

Installazione CodeIgniter: prime impressioni

02 Nov 2019 | M.A.D.R.

Abbiamo già citato nell'articolo precedente alcune caratteristiche di questo Framework CodeIgniter. Piccola premessa obbligata... Oggi passeremo al setaccio la procedura d'installazione dello stesso e cercheremo di orientarci nella struttura ...

CodeIgniter - Un framework di tutto rispetto

02 Nov 2019 | M.A.D.R.

Arriva un momento, nel percorso lavorativo di un programmatore Php, nel quale si avverte la mancanza di un framework che possa semplificare la gestione di flussi più o meno complessi. I così detti framework contengono metodi e funzioni in rispo...

Soluzioni complete per ogni esigenza