Vanaf de command line een PHP script uitvoeren is handig bij het uitvoeren van cronjobs.
Aangepaste PHP.ini laden
php --php-ini /var/www/vhosts/davidvandertuijn.nl/etc/php.ini /var/www/vhosts/davidvandertuijn.nl/index.php
In dit voorbeeld laad ik de PHP configuratie van het domein davidvandertuijn.nl in, anders zal de default PHP configuratie (e.g. /etc/php.ini) worden gebruikt.
Defineer een PHP ini waarde
php –d memory_limit=512M /var/www/vhosts/davidvandertuijn.nl/index.php
In dit voorbeeld wordt tijdelijk het geheugen limit verhoogd voor het uitvoeren van het script.
Parameters in het Kohana Framework
Syntax
php index.php --uri=your/uri/here --get=query=string&options=here --method=POST --post=more=query&strings=yes
php /var/www/vhosts/davidvandertuijn.nl/index.php --uri=cronjob/synchroniseren --method=POST --post=client_id=davidvandertuijn
De parameter 'uri' wordt herkend als route in het Kohana Framework zodat de functie 'action_synchroniseren' in de controller 'cronjob' wordt uitgevoerd.
De paramater 'post' wordt herkend als $_POST['client_id'] = 'davidvandertuijn';
Meer informatie: CLI | Kohana User Guide
Parameters in PHP
php test.php cronjob synchroniseren davidvandertuijn
Om parameters in PHP op te vragen kan de gereserveerde variabele $argv worden gebruikt:
echo $argv[1]; // cronjob echo $argv[2]; // synchroniseren echo $argv[3]; // davidvandertuijn
Zie ook: getopt()
Het PHP script is ongewenst toegankelijk via http://www.davidvandertuijn.nl/cronjob/synchroniseren .
Het is bij voorkeur aanbevolen om cronjob scripts buiten de DOCUMENT_ROOT te plaatsen zodat deze niet via een URL aanroep uitgevoerd kunnen worden.
Beveiliging in het Kohana Framework
Om te controleren of een script wordt uitgevoerd vanaf de command line in het Kohana Framework:
if (Kohana::$is_cli) { // Uitvoeren }
Beveiliging in PHP
Om te controleren of een script wordt uitgevoerd vanaf de command line vanaf PHP 4.2.0
if (PHP_SAPI === 'cli') { // Uitvoeren }
Zie ook: php_sapi_name()