- Decirle a PHP que ejecute un determinado fichero.
$ php mi_script.php $ php -f mi_script.php
Ambas formas (usando o no el modificador -f ) ejecutan el fichero mi_script.php. Nótese que no hay restricción sobre cuales ficheros puede ser ejecutado; en particular, el nombre del fichero no es necesario que tenga una extensión .php.
Sin embargo, en sistemas Unix, hay otra forma de usar PHP para scripts de consola. Se puede escribir un script en el que la primera línea comience con #!/usr/bin/php (sustitúyalo por la ruta a su CLI binario de PHP si es diferente). El resto del fichero debería contener código PHP normal con las etiquetas usuales de inicio y fin de PHP. Una vez que se otorguen permisos de ejecución al fichero apropiadamente (p.ej. chmod +x test) el script podrá ejecutarse como cualquier otro script de consola o perl:
#!/usr/bin/php
<?php
var_dump($argv);?>
Asumiendo que este fichero se llama test y que está en el directorio actual, es posible hacer lo siguiente:$ chmod +x test $ ./test -h -- foo array(4) { [0]=> string(6) "./test" [1]=> string(2) "-h" [2]=> string(2) "--" [3]=> string(3) "foo" }
Ejemplo #2 Script destinado a ejecutarse desde la línea de comandos (script.php)#!/usr/bin/php
<?phpif ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {?>
Éste es un script PHP de línea de comandos con un parámetro.
Uso:
<?php echo $argv[0]; ?> <parámetro>
<parámetro> puede ser alguna palabra que desee
mostrar en pantalla. Con las opciones --help, -help, -h,
o -?, puede mostrarse esta ayuda.
<?php} else {
echo $argv[1];
}?>El script de arriba, incluye la primera línea especial "shebang" de Unix para indicar que este fichero debería ejecutarse por PHP. Puesto que aquí estamos trabajando con una versión CLI, no se mostrarán cabeceras HTTP.El programa comprueba primero que hay más de un parámetro (adicionalmente al nombre del script, el cual también es contado). Si no lo hay, o si el parámetro fuese --help , -help , -h o -? , se imprime el mensaje de ayuda, utilizando $argv[0] para escribir el nombre del script dinámicamente tal como se escribió en la línea de comandos. De otra manera, el parámetro es mostrado exactamente como se recibió.Para ejecutar el script superior en Unix, debe otorgarle permisos de ejecución al fichero para hacerlo ejecutable, y llamarlo simplemente como script.php mostrar_esto o script.php -h. En Windows, se puede crear un fichero por lotes para lograr esta tarea:Ejemplo #3 Fichero por lotes para ejecutar un script PHP en línea de comandos (script.bat)@echo OFF "C:\php\php.exe" script.php %*
Asumiendo que el programa superior se llamara script.php, y CLI php.exe estuviera en C:\php\php.exe , este fichero por lotes lo ejecutaría automáticamente con los parámetros que se le hayan pasado: script.bat mostrar_esto o script.bat -h.Vea también la documentación de extensión Readline para conocer más funciones que pueden ser utilizadas para mejorar las aplicaciones de línea de comandos en PHP.Si está en Windows, puede configurar PHP para que no sea necesario añadir ni C:\php\php.exe ni la extensión .php, tal como se describe en PHP en Línea de Comandos en Microsoft Windows.Otro script imprimiendo un bucle con numeros y accediendo a una base de datos mysql.
<?php
var_dump($argv);
$i = 1;
while ($i <= 1000){
echo $i . "\n";
$i++;
}
$mysqli = new mysqli("localhost", "root", "123456", "FlughafenDB");
{
$query = $mysqli -> query ("select * from flug limit 20");
while ($valores = $query->fetch_assoc()) {
echo $valores['flug_id'] ." " . $valores['flugnr'] ." ". $valores['ankunft']. " ". $valores['abflug']. " ". $valores['fluglinie_id']. "\n";
}
}
?>Suponiendo que este fichero se llame test. No hace falta poner extension.$ chmod +x test $ ./test
la salida por pantalla seria :...986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1 AF1078 2015-06-01 20:46:00 2015-06-01 10:15:00 1
2 AF1377 2015-06-02 10:05:00 2015-06-01 23:41:00 1
3 AF1518 2015-06-01 11:13:00 2015-06-01 03:39:00 1
4 AF1593 2015-06-01 16:48:00 2015-06-01 00:02:00 1
5 AF1632 2015-06-02 09:22:00 2015-06-01 19:44:00 1
6 AF1748 2015-06-01 19:51:00 2015-06-01 08:31:00 1
7 AF1837 2015-06-01 18:51:00 2015-06-01 07:24:00 1
8 AF1908 2015-06-01 17:05:00 2015-06-01 05:47:00 1
9 AF2227 2015-06-01 18:19:00 2015-06-01 05:00:00 1
10 AF3068 2015-06-01 23:59:00 2015-06-01 06:00:00 1
11 AF3226 2015-06-02 06:43:00 2015-06-01 16:14:00 1
12 AF3230 2015-06-01 19:38:00 2015-06-01 07:38:00 1
13 AF3256 2015-06-02 05:32:00 2015-06-01 13:22:00 1
14 AF3430 2015-06-01 15:04:00 2015-06-01 02:58:00 1
15 AF3676 2015-06-02 07:00:00 2015-06-01 20:30:00 1
16 AF3985 2015-06-02 15:43:00 2015-06-01 22:33:00 1
17 AF4041 2015-06-01 10:44:00 2015-06-01 09:23:00 1
18 AF4056 2015-06-02 04:49:00 2015-06-01 09:35:00 1
19 AF4126 2015-06-02 10:27:00 2015-06-01 20:42:00 1
20 AF4264 2015-06-01 22:44:00 2015-06-01 04:11:00 1
El mismo script en PDO y con la misma salida seria:
#!/usr/bin/php
<?php
var_dump($argv);
$i = 1;
while ($i <= 1000){
echo $i . "\n";
$i++;
}
$db = new PDO("mysql:host=localhost;dbname=FlughafenDB", "root", "3266root");
$datos=$db->prepare("select * from flug limit 20");
$datos->execute();
$result = $datos->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $valores) {
echo $valores['flug_id'] ." " . $valores['flugnr'] ." ". $valores['ankunft']. " ". $valores['abflug']. " ". $valores['fluglinie_id']. "\n";
}
?>
Ahora un script con entrada de argumentos:
#!/usr/bin/php
// para ejecutar : ./test2 Numero de registros. Ejemplo : ./test2 30
<?php
var_dump($argv);
$i = 1;
while ($i <= 10){
echo $i . "\n";
$i++;
}
$nu=(int)$argv[1];
echo $argv[1];
$db = new PDO("mysql:host=localhost;dbname=FlughafenDB", "root", "3266root");
$datos=$db->prepare("select * from flug limit $nu");
$datos->execute();
$result = $datos->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $valores) {
echo $valores['flug_id'] ." " . $valores['flugnr'] ." ". $valores['ankunft']. " ". $valores['abflug']. " ". $valores['fluglinie_id']. "\n";
}
?>
Ahora otro script con entrada por teclado:
#!/usr/bin/php
// para ejecutar : ./test3 e introducir cuando se nos pregunte el numero de registros a imprimir
<?php
echo "Escribe numero de registros a imprimir: "; $numero = trim(fgets(STDIN));
$db = new PDO("mysql:host=localhost;dbname=FlughafenDB", "root", "3266root");
$datos=$db->prepare("select * from flug limit $numero");
$datos->execute();
$result = $datos->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $valores) {
echo $valores['flug_id'] ." " . $valores['flugnr'] ." ". $valores['ankunft']. " ". $valores['abflug']. " ". $valores['fluglinie_id']. "\n";
}
?>
Comentarios
Publicar un comentario