Eseguire una funzione da command line in CodeIgniter
Con CodeIgniter è possibile eseguire un metodo di un controller tramite command line, sfruttando tutte le funzionalità integrate compreso il routing.
Ad esempio avendo un controller con questa struttura:
class Persone extends CI_Controller
{
public function saluta($nome = '?'){
echo 'Ciao '.$nome;
}
}
sarà possibile richiamare la funziona "saluta" dall'url www.miosito.com/persone/saluta/Marco .
Per eseguire la stessa funzione tramite linea di comando si può fare nel seguente modo.
Dopo aver aperto la linea di comando spostarsi all'interno della directory del progetto:
cd C:\xampp\htdocs\vhosts\mioprogetto
Eseguire quindi il file index.php passando come parametri il controller, la funzione ed eventuali variabili:
php index.php persone saluta Marco
Che produrrà l'output:
Ciao Marco
CodeIgniter mette a disposizione anche una comoda funzione per aumentare la sicurezza.
Se vogliamo che lo script sia accessibile SOLO da cmd si può modificare la funzione così:
class Persone extends CI_Controller
{
public function saluta($nome = '?'){
if (!$this->input->is_cli_request()) {
echo "Accessibile solo da command line";
return;
}
echo 'Ciao '.$nome;
}
}
In questo modo le richieste tramite URL verranno bloccate.
Se come risutato viene restituito un template html completo è possibile che sia necessario modificare il parametro di configurazione uri_protocol da:
$config['uri_protocol'] = "REQUEST_URI";
in
$config['uri_protocol'] = "AUTO";
Commenti