Uitvoeren van PHP in de CLI, enkele vragen...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Ariën  -
Beheerder

- Ariën -

28/06/2012 09:28:42
Quote Anchor link
Ik ben bezig met het bouwen van een convert-script, welke in de CLI van PHP uitvoerd dient te worden. Echter ik weet wel hoe de CLI werkt, maar ik heb nog geen ervaring met het uitvoeren van PHP-bestanden via CLI.

Met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
php /home/pietje/covert_script.php

..kan iemand dus een script uit laten voeren door PHP.

En eventuele argumenten (zoals in bash) worden als volgt genoteerd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
php /home/pietje/convert_images.php my_dir1 mydir2
, 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 -
 
PHP hulp

PHP hulp

27/04/2024 12:45:03
 
- SanThe -

- SanThe -

28/06/2012 09:34:39
Quote Anchor link
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.
 
Wouter J

Wouter J

28/06/2012 09:42:21
Quote Anchor link
Je kan ook een bat bestandje maken. Hierdoor hoef je niet dat php /... te typen maar alle convert_images. En boven aan je PHP script plaats je #! path/naar/php.exe hierdoor werkt het ook in Mac en Linux.

Tevens zou ik de tool convert laten heten met verschillende methods, zoals:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
convert images --dir img/
convert script --dir scripts/


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
 
- SanThe -

- SanThe -

28/06/2012 09:48:48
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

28/06/2012 09:51:04
Quote Anchor link
Thnnx voor de tip Wouter. Het ging eigenlijk om het voorbeeld, het hele convert-script moet nog worden gemaakt.

maar hoe detecteer je een bestand dat via de CLI wordt aangeroepen?
 
Wouter J

Wouter J

28/06/2012 14:12:17
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
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
}
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.