He conseguido crear un crontab,pase crontab una variable y léala de PHP?
por ejemplo, * * * * * php /my/directory/file.php
Quiero pasar una variable de este crontab para leerlo dentro archivo.php
cómo puedo hacer eso?
Gracias.
He conseguido crear un crontab,pase crontab una variable y léala de PHP?
por ejemplo, * * * * * php /my/directory/file.php
Quiero pasar una variable de este crontab para leerlo dentro archivo.php
cómo puedo hacer eso?
Gracias.
Tenga en cuenta que ejecutar PHP desde el shell es completamente diferente de ejecutarlo en un entorno de servidor web. Si no ha realizado la programación de la línea de comandos antes, puede encontrarse con algunas sorpresas.
Dicho esto, la manera habitual de pasar información a un comando es poniéndola en la línea de comando. Si hace esto:
php /my/directory/file.php "some value" "some other value"
Luego dentro del guión, $argv[1]
se establecerá en "some value"
y $argv[2]
se establecerá en "some other value"
. ($argv[0]
se establecerá en "/my/directory/file.php"
).
Cuando ejecuta un script PHP desde la línea de comandos, puede acceder al conteo de variables desde $argc
y los valores reales en el conjunto . Un simple ejemplo.
Considere prueba.php
<?php
printf("%d arguments given:\n", $argc);
print_r($argv);
La ejecución de esta usando php test.php a b c
:
4 arguments given:
Array
(
[0] => test.php
[1] => a
[2] => b
[3] => c
)
+1 para su explicación. –
¿Puedo añadir a los respuestas que para los parámetros de línea de comandos más sofisticados de manipulación es posible que desee utilizar getopt()
: http://www.php.net/manual/en/function.getopt.php
N cualquiera de los métodos anteriores funcionó para mí. Ejecuto cron en el servidor compartido de mi hoster. La tarea cron se crea con la interfaz tipo cPanel. La línea de comandos llama a PHP pasando el nombre del script y un par de argumentos.
Esa es la forma en la línea de comandos de cron se ve:
php7.2 /server/path/to/my/script/my-script.php "test.tst" "folder=0"
Ninguna de las respuestas anteriores con trabajaron para mi caso.
El problema fue que nadie le dijo que tenía que declarar como global antes de obtener el acceso a los argumentos CLI. Esto tampoco se menciona en el manual oficial de PHP.
Bueno, probablemente uno tenga que declarar ony global para que los scripts se ejecuten con el servidor. Tal vez en un entorno local ejecutar script en CLI no requiere ser declarado global. Cuando lo pruebo, publico aquí.
Pero nevertherless para mi caso la configuración de trabajo es:
global $argv;
echo "argv0: $argv[0]\n\r"; // echoes: argv0: /server/path/to/my/script/my-script.php
echo "argv1: $argv[1]\n\r"; // echoes: argv1: test.tst
echo "argv2: $argv[2]\n\r"; // echoes: argv2: folder=0
Me dieron los mismos resultados con $_SERVER['argv']
gama superglobal. Uno puede hacer uso de ella de esta manera:
$myargv = $_SERVER['argv'];
echo $myargv[1]; // echoes: test.tst
la esperanza de que ayude a alguien.
Lo intenté, no funcionó. ¿Tengo que poner el segundo argumento entre citas para poder leerlo allí? porque no usé citas en el comando. –
¿Está tu PHP creado para la línea de comandos? Es un SAPI diferente y requiere un binario PHP diferente del que usa para CGI. –
Uso el comando shell_exec ("comando"); para crear crontabs –