GNU/Linux >> Tutoriales Linux >  >> Linux

Pasar parámetros $_GET al trabajo cron

No es una respuesta directa a su pregunta, pero creo que es una mejor solución:

Si desea que nadie, excepto cron, ejecute el script, simplemente colóquelo fuera de la raíz web. De esa manera no hay acceso a través del servidor web en absoluto.

Si también necesita ejecutar el comando como un usuario especial, no use GET pero tenga un inicio de sesión de usuario y verifique una sesión iniciada (una determinada variable de sesión establecida...) e incluya el script solo en esa página.

Su script de acceso público se vería así:

session_start();

if (isset($_SESSION['user']))
{
  include '/path/to/script/outside/of/web-root';
}
else
{
  die('No access.');
}

El $_GET[] &$_POST[] las matrices asociativas solo se inicializan cuando su secuencia de comandos se invoca a través de un servidor web. Cuando se invoca a través de la línea de comando, los parámetros se pasan en el $argv matriz, al igual que C.

Contiene una matriz de todos los argumentos pasados ​​al script cuando se ejecuta desde la línea de comando.

Tu comando sería:

* 3 * * * /path_to_script/cronjob.php username=test password=test code=1234 

Luego usaría parse_str() para establecer y acceder a los parámetros:

<?php

var_dump($argv);

/*
array(4) {
  [0]=>
  string(27) "/path_to_script/cronjob.php"
  [1]=>
  string(13) "username=test"
  [2]=>
  string(13) "password=test"
  [3]=>
  string(9) "code=1234"
}
*/

parse_str($argv[3], $params);

echo $params['code']; // 1234

Linux
  1. [SOLUCIONADO] Cron job wget escribiendo archivos en el directorio raíz

  2. nohup:comando no encontrado

  3. Probar un trabajo cron semanal

  4. ¿Puedo ejecutar un trabajo cron con más frecuencia que cada minuto?

  5. ¿Qué zona horaria está usando un trabajo cron?

Cómo configurar un trabajo cron en Linux

Cómo crear un script de un comando de Linux

¿Pasar múltiples parámetros a través de Xargs?

¿Trabajo cron para verificar si el script Php se está ejecutando, si no, entonces ejecutar?

Mi trabajo de Cron no funciona

¿Cómo ejecutar un comando en un script de Shell?