Uitvoeren van PHP in de CLI, enkele vragen...
Met
..kan iemand dus een script uit laten voeren door PHP.
En eventuele argumenten (zoals in bash) worden als volgt genoteerd:
, waarbij in $_SERVER['argv'] een array staat van alle argumenten en de bestandsnaam.
Echter, als ik op deze manier een script uitvoer, wordt deze automatisch beeindigd? Of alleen als er exit() in staat? En hoe kan je controleren of iets via de CLI loopt, is een isset op $_SERVER['argv'] betrouwbaar?
En als ik een uitgevoerd PHP-bestand wil beeindigen moet ik dit gewoon met 'kill <process_ID>' doen?
Gewijzigd op 28/06/2012 09:29:06 door - Ariën -
Waarom zou het script niet gewoon eindigen? Zolang jij er geen oneindige loop inbouwt stopt het na de laastste regel. Een exit() is om het vroegtijdig te stoppen. En, zover ik weet, valt er niks te killen na afloop. Uiteraard wel bij de oneindige loop want die stopt niet meer.
Tevens zou ik de tool convert laten heten met verschillende methods, zoals:
Ik heb zelf ook 2 CLI scripts gemaakt. Hiervoor heb ik de Symfony Console Component gebruikt. Ik zou die zeker aanraden. Daarin kan je heel makkelijk CLI applicaties maken.
Een voorbeeldje: de Basis applicatie en het compress command.
Het bouwt automatisch een Help pagina in met alle methods en beschrijvingen. Tevens handelt het voor je af welke methods er aangeroepen worden en parameters (--hello foo) en options (--no-gitignore).
Gewijzigd op 28/06/2012 09:44:31 door Wouter J
Wouter J op 28/06/2012 09:42:21:
#! path/naar/php.exe hierdoor werkt het ook in Mac en Linux.
Linux en .exe dacht het niet.
maar hoe detecteer je een bestand dat via de CLI wordt aangeroepen?
Quote:
Linux en .exe dacht het niet.
Nouja, #! path/naar/php dan :) Zoals je hier kunt zien: http://nl3.php.net/manual/en/features.commandline.usage.php
Quote:
maar hoe detecteer je een bestand dat via de CLI wordt aangeroepen?
Na wat zoeken op php detect cli call kreeg ik dit antwoord:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
// alles groter dan PHP4.2.0
if (PHP_SAPI == 'cli') {
// command line
}
// alles groter dan PHP4.0.1
if (php_sapi_name() == 'cli') {
// command line
}
?>
// alles groter dan PHP4.2.0
if (PHP_SAPI == 'cli') {
// command line
}
// alles groter dan PHP4.0.1
if (php_sapi_name() == 'cli') {
// command line
}
?>