Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Escopo de um agendamento CRON
minuto hora dia mês dia_da_semana php /caminho/completo/do/arquivo.php
*Para assegurar-se, especifique o caminho completo do binário do PHP.
Geralmente no path "/usr/sbin/php"
Um exemplo simples, agendando para executar as 13 horas e 0 minutos do dia 3 de Dezembro:
00 13 03 12 * /usr/sbin/php /caminho/completo/do/arquivo.php
[table=.]
[tr][td]minuto[/td][td]hora[/td][td]dia[/td][td]mês[/td][td]dia da semana[/td][/tr]
[tr][td]00[/td][td]13[/td][td]03[/td][td]12[/td][td]*[/td][/tr]
[/table]
/**
* Gera o arquivo contendo o shell script
*/
$script_path = '/caminho/completo/do/arquivo.php';
$php_bin = '/usr/sbin/php';
$file = '/caminho/do/arquivo/processos.sh';$content = implode( ' ', $dt ) . ' ' . $php_bin . ' ' . $script_path;
file_put_contents( $file, $content );
if( !file_exists( $file ) )
{
throw new \Exception('Oooops.. "' . $file . '" not found');
}
/**
* Adiciona o script ao crontab
*/
exec('crontab ' . $file, $output, $return);
if($return === 0) {
//echo 'Cron Successful';[**Notas*]
Permissões de execução
O arquivo processos.php, ou seja, o arquivo que executará a criação do agendamento CRONTAB, deve ser executado sob um usuário que possua permissões de execução de comandos shell.
Para verificar qual usuário executa o arquivo "processos.php", faça um simples debug:
echo exec('whoami');
Retornará algo como apache2handle, apache, apache2, wwwuser ou coisas do tipo.
Caso o usuário não possua permissões, verifique com o administrador do servidor.
Periodicidade e remoção do agendamento
Ao completar o processo, remova-o do agendamento caso não necessitar que seja executado novamente sob as regras agendadas.
define( 'ENV_OWNER' , 'webuser' );
/**
* Workaround to avoid script delete root jobs if someone executes the script under root privilegies
*/
$user = ( exec('whoami') == 'root' ) ? ' -u ' . ENV_OWNER : '';
shell_exec( 'crontab -r' . $user); // remove all jobs for current or specified user
Ferramentas úteis:
Geradores de sintaxes CRON:
http://www.generateit.net/
http://www.easycron.com/generator/cronjob
http://bit.ly/18e0mIt
Documentação PHP
http://php.net/implode
http://php.net/exec
http://php.net/shell_exec
http://php.net/implode
http://php.net/file_put_contents
#2 Sem querer ser grosseiro, mas isso aqui não é suporte técnico. Se liga malandro..
Se vc tiver algo útil a acrescentar, ao artigo, será bem vindo.
>
#2 Sem querer ser grosseiro, mas isso aqui não é suporte técnico. Se liga malandro..
Se vc tiver algo útil a acrescentar, ao artigo, será bem vindo.
Boa tarde,
Eu sei que o forum não é suporte técnico, o imaster é destinado a pessoas que tem conhecimento na área e tem dúvidas. Postei um assunto que tenho dúvidas e sem querer achei o seu post e vi que você tem um grande conhecimento no tópico. Eu não sou malandro estou apenas em busca de conhecimento, se você não gostou tudo bem, respeito o seu ponto de vista, mas então era só você não responder.
Boa noite,
Achei o seu post sobre agendamento Cron, estou trabalhando em um Script minutos atrás postei um tópico sobre esse assunto, por favor entre no link e veja o que postei e se você pode me ajudar:
http://forum.imasters.com.br/topic/513468-agendamento-de-tarefa-crontab/
Obrigado!