passar crontab uma variável e lê-lo a partir do PHP?

Eu consegui criar um crontab,

por exemplo, * * * * * php /my/directory/file.php

Eu quero passar uma variável deste crontab para lê-lo dentro do arquivo.php

Como eu posso fazer isso?

Obrigado.

Tenha em mente que executar PHP a partir do shell é completamente diferente de executá-lo em um ambiente de servidor web. Se você não fez a programação de linha de comando antes, você pode encontrar algumas surpresas.

Dito isto, a maneira usual de transmitir informações em um comando é colocá-lo na linha de comando. Se você fizer isto:

  php /my/directory/file.php "some value" "some other value" 

Então dentro de seu script, $argv[1] será definido como "some value" e $argv[2] será definido como "some other value" . ( $argv[0] será definido como "/my/directory/file.php" ).

Quando você executa um script PHP da linha de comando, você pode acessar a contagem de variables ​​de $argc e os valores reais na matriz $argv . Um exemplo simples.

Considere test.php

  

Executando isso usando php test.php abc :

 4 arguments given: Array ( [0] => test.php [1] => a [2] => b [3] => c ) 

Posso adicionar as respostas de $argv que, para o gerenciamento de parâmetros de linha de comando mais sofisticados, você pode querer usar o getopt() : http://www.php.net/manual/en/function.getopt.php

Nenhum dos methods acima funcionou para mim. Executo o cron no servidor compartilhado do meu hoster. A tarefa cron é criada com a interface cPanel-like. A linha de comando chama PHP passando o nome do script e alguns argumentos.

É assim que a linha de comando para o cron parece:

php7.2 /server/path/to/my/script/my-script.php "test.tst" "folder=0"

Nenhuma das respostas acima com $argv funcionou para o meu caso.

A questão foi que ninguém disse que você deve declarar $argv como global antes de obter o access aos argumentos da CLI. Isso não é mencionado no manual oficial do PHP.

Bem, provavelmente é preciso declarar $argv global ony para scripts executados com o servidor. Talvez em um ambiente local executando script na CLI $argv não requer ser declarado global. Quando eu testá-lo, posteio aqui.

Mas, nunca mais para o meu caso, a configuração de trabalho é:

 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 

Eu obtive os mesmos resultados com $_SERVER['argv'] array superglobal. Pode-se usá-lo assim:

  $myargv = $_SERVER['argv']; echo $myargv[1]; // echoes: test.tst 

Espero que ajude alguém.