Ir para conteúdo
  • 0
Shinchila_Matadora

Função CRON no servidor

Pergunta

Pessoal, estou precisando executar um arquivo .php dentro de um servidor todos os dias da semana as 13, exceto sábado e domingo.
Alguém sabe qual o comando que devo dar para que isso seja possível?

E além disso, tem alguma forma de visualizar as funções CRON que eu inputar no servidor?
Estou começando agr e preciso de ajuda.
Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

12 respostas a esta questão

Recommended Posts

  • 1
Em 08/09/2017 at 10:47, Shinchila_Matadora disse:

Quero que execute de segunda a sexta em 3 horários diferentes
15:29, 15:30 e 15:31.

29-31 15 * * 1-5 /usr/bin/php /path/para/o/arquivo.php >/dev/null 2>&1

 

Significa: todos os minutos de 29 até 31, à partir das 15 horas, de segunda à sexta-feira.

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 2
0 13 * * 1-5 /usr/bin/php /path/para/o/arquivo.php >/dev/null 2>&1

Significa: às 13 horas de segunda à sexta-feira.

 

;)

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 1

1 - você precisa colocar o arquivo que você quer executar em alguma pasta que posse ser lida pelo apache.
2 - Indicar as coisas que devem ser feitas e as condições ao CRON, e apontar o CRON pra abrir o arquivo em um navegador.
 

Essa abertura pode ser feita de duas formas:

 

1 - Indicar para o cron abrir o navegador e acessar a url.

2 - Criar um atalho que abra direto o navegador na url em questão, e indicar para o CRON trigerar esse atalho.

 

Para visualizar os comandos atuais se não me engano é 'contrab -l'.
 

Eu preciso fazer um negócio parecido, mas ainda não fiz, mas acredito que seja esse o caminho.

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 1

@Shinchila_Matadora da uma olhada aqui, foi bem mais simples do que eu tinha imaginado.


Para abrir

Citar

contrab -e


Esse executa todo dia as 19 horas a rotina que verifica as modificações e faz um backup diário.
Citar

00 19 * * * /var/www/routines/backup-modified.php

 

 

E essa chama um arquivo que faz o backup completo toda sexta feira as 20 horas, e armazena num local separado.

 

Citar

00 20 * * 5 /var/www/routines/dump-all-structure-and-data.php

 

Não testei 100%, mas é basicamente só isso.

 

A lógica do crontab é:

 

*  *  *  * * /caminho/objeto.formato

 

1 ° *  => Minutos

2 ° *  => Hora

3 ° *  => Dia do mês

4 ° * => Mês (1-12)

5 ° * => Dia da semana (0 dom, 6 sab)

 

E no final vai o caminho para o que deve ser executado.

 

PS: Eu rodo isso direto no servidor com pacote LAMP, então ele ja le automatico, se você usar um pacote como o XAMPP não sei dizer se ele vai ler só executando, mas acredito que sim, exceto se você substituiu o apache nativo ( e também depende de qual distro você usa, eu uso Debian 7).

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

AnthraxisBR, obrigado por responder.
 

Pelo oq eu pesquisei aqui, eu teria que dar 5 comando diferentes(Um pra cada dia útil  da semana) pra executar o meu arquivo de segunda a sexta. Minha grande dúvida é se tem como fazer isso com um único comando.
E obrigado pela segunda resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

@AnthraxisBR Obrigado pela resposta cara, já me deu uma luz imensa.

Mas ainda estou com um porém. Dessa forma que é feita, eu teria que criar uma função CRON para cada dia da semana exceto sábado e domingo.
Existe alguma forma de escrever isso que faça com que ele execute o arquivo todos os dias 'exceto' sábado e domingo?

 

Essa é minha grande questão

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
Em 05/09/2017 at 12:52, João Batista Neto disse:

0 13 * * 1-5 /usr/bin/php /path/para/o/arquivo.php >/dev/null 2>&1

Significa: às 13 horas de segunda à sexta-feira.

 

;)

Obrigado, era isso que eu queria.

Mas vou apertar um pouco mais kkk

Quero que execute de segunda a sexta em 3 horários diferentes
15:29, 15:30 e 15:31.
Tem como fazer isso num único comando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por MateusOFCZ
      Olá, estou desenvolvendo um sistema de publicidade para meu site, e quando entra em uma página, vamos chama-la de "Publicidade" ele mostra uma publicidade e depois de 10 segundos ele redireciona (OBS.: Essa página já está funcionando 100%), e temos outra página que vamos chama-la de "Início", bom... Quando você entrar na página "Início" ele irá na verdade, redirecionar o usuário para a página de Publicidade, porém, como faço para a pessoa não poder pular essa publicidade, como se fosse um camuflador de página, ou seja, se o usuário acessar a página ele irá para a página "imasters.com.br/publicidade", porém se ele alterar o link para "imasters.com.br/inicio" ele irá obrigar o usuário a ver a publicidade primeiro para depois leva-lo a página de "Inicio", caso isso seja complexo de fazer, teria alguma forma de esconder o nome da página (a parte do "/inicio" por exemplo), e deixar apenas o link, por exemplo, se eu ir para a página de publicidade irá aparecer apenas o link, neste caso "imasters.com.br", e não "imasters.com.br/publicidade", caso tenha alguma dúvida sobre o meu pedido pode perguntar, não mordo rs.

      Deis de já agradeço!
    • Por martinazzo
      Olá pessoal,
       
      sou novo por aqui e não sei bem como funciona, mas sei que preciso de uma ajuda kkkkk
      se puderem me dar uma mão ficaria grato;
       
      Estou tendo problemas em como pegar id de uma linha clicada em uma table, que já recebe os dados de um bd. Eu gostaria de poder editar os campos e salvar no banco de dados usando o ID da linha clicada;
       
      Vou colar o código abaixo, não reparem na bagunça kkkkk
       
      conexao.php
      <?php $server = "XXXXX";         Conferido e esta correto; $username = "XXXXX";  Conferido e esta correto; $password = "XXXXX";  Conferido e esta correto; $dbname = "XXXXX";     Conferido e esta correto; $conn = mysqli_connect($server, $username, $password, $dbname); altera.php
      <?php  $link = mysqli_connect("XXXXXX", "XXXXX", "XXXXX", "XXXXXX"); Conferido $sql = "SELECT * FROM interface "; $consulta = mysqli_query($link, $sql); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="refresh" content="30"> <link rel="stylesheet" type="text/css" href="style.css"> <script src="sorttable.js"></script> <title>Dashboard</title> <?php  session_start(); if(!isset($_SESSION['login']) and !isset ($_SESSION['senha'])){     session_destroy();   unset($_SESSION['login']);   unset($_SESSION['senha']);   header('location:index.html');      }    ?> </head> <body> <a href="index.php"><img src="img/ditec_smart_hor_150px.png"></a> <div class="borda_titulo"> <h2><center>DIMILK | Equipamentos</font></h2></center></div><br /><br /> <form name="equipamento" action="salva.php" method=post> <center><table id="minhaTabela" border="3" class="sortable" bgcolor="#1E90FF">   <tr>   <th><center>ID </center></th>   <th><center>MAC</center></th>   <th><center>Habilitado</center></th>   <th><center>Descrição</center></th>   <th><center>Altura Tarro</center></th>   <th><center>Área Tarro</center></th>   <th><center>Alterar</center></th>   </tr>        <?php while($registro = mysqli_fetch_assoc($consulta)){         echo '<tr bgcolor="#ADD8E6" scope="row">';         echo '<td name="id"><center>'.$registro["id"].'</center></td>';         echo '<td name="mac"><center>'.$registro["mac"].'</center></td>';         echo '<td><center><input type="checkbox" name="status" value="$teste"><br></center></td>';         echo '<td id="linha_desc"><textarea name="desc" type=text placeholder="'.$registro["descricao"].'" /></textarea></td>';         echo '<td><input name="altura" type=text style="width: 70px;" placeholder="'.$registro["altura_latao"].' cm" /></td>';         echo '<td><input name="area" type=text style="width: 70px;" placeholder="'.$registro["area_latao"].' cm" /></td>';                  echo '<td><form method="get" action="salva.php"><center><button class="voltar" type="submit">Salvar</button></center></form><br />';         echo '</tr>';         }     echo '</tbody></table></form>';          ?></center><br />              <div>                         <form method="get" action="index.html">                     <center><button class="voltar" type="submit">Voltar</button></center></form>         </div>                                  <br />                 <footer class="borda_texto"><center>                 <img src="img/rodape_logo.png">                     2019 © <b>DITEC - Smart Solutions</b> - Todos os Direitos Reservados.                 <a class="px-4" href="https://www.ditecsc.com.br" target="_blank">Ditec - Smart Solution</a>                 </center></footer> </body> </html> salva.php
       
      <?php include('conexao.php'); include_once('altera.php');   // declaração de variáveis $id = 22; /*$id = $_GET['id']; $status = $_POST['status'];*/ $descricao = $_POST['desc']; $altura = $_POST['altura']; $area = $_POST['area'];   $up = mysqli_query($conn, "UPDATE interface SET descricao='$descricao', altura_latao='$altura', area_latao='$area' WHERE id=$id");    if(mysqli_affected_rows($conn) > 0){   echo '<center><h1><b>Sucesso</b></h1><br /> <h2>Atualizado!</h2></center>';   header("Refresh: 2;url=equipamentos.php"); }else{     echo '<center><h1><b>Erro</b></h1><br /> <h2>Não foi atualizado!</h2></center>';   header("Refresh: 2;url=altera.php"); }   mysqli_close($conn); ?> Do jeito que esta eu consigo alterar o id=22, mas não consegui pegar o id da linha sequente;
       
       
    • Por Diego Alexandre Dias
      Boa tarde,
       
      Estou tentando incluir uma formatação de moeda (number_format) dentro de um comando While, porém não estou tendo sucesso.
      Por Exemplo:
       
      Criei uma tabela simples que contempla a relação de clientes com seus respectivos valores de creditos adiquiridos
       
      Neste caso no corpo da tabela eu possuo três colunas:
       
      Valor_Credito , Cliente, status
       
      criei uma variável  $venda que recebe o resultado de uma query do meu banco de dados. Este mesmo resultado da query eu atribui uma variavel chamada $total .
      Esta mesma consulta se encarrega de somar o valor total de crédito adiquirido por cliente
       
      Sendo assim, meu WHILE percorre por todo minha tabela de clientes somando os respectivos creditos.
      Como resultado eu consigo retornar todas as informações que eu quero, porém não estou conseguindo fazer com que o valor de crédito saia com a formatação de moeda.
       
       

       
      O comando responsável por me trazer a relação de clientes  juntamente com  os créditos somados.  
               while ($venda = mysqli_fetch_assoc($total)) {                 echo '<tr>';                     echo '<td class="text-left">';                         echo $venda ['valor_credito'];       // Esta é a linha que preciso utilizar o number_format, porém tentei adaptá-lo de diferentes formas, mas não consegui.                     echo '<td>';                         echo $venda['Cliente'];                     echo '</td>';                                                 echo '<td class="text-right">';                         echo $venda['status'];                     echo '</td>';                 echo '</tr>';                        echo '</tbody>'; Agradeço desde já quem puder me ajudar.
    • Por pushline
      sou novo em php e to aprendendo ainda, e me deparei com esse algoritmo e estou travado, por favor alguém me ajude?
       
      Um posto de combustível vende três tipos de combustível: etanol, diesel e gasolina. O preço por
      litro de combustível e apresentado na tabela a seguir. Desenvolva em php e html uma página onde o
      usuário informe um caractere que representa o tipo de combustível comprado (e, d ou g) e a
      quantidade em litros. Ao final, a página deverá mostrar o valor total a ser pago pelo combustível.
      Combustível Preço por Litro
      E – Etanol R$ 3,505
      D – Diesel R$ 3,653
      G – Gasolina R$ 4,595
       
      todo o jeito de codigo q eu fiz ficou travado e nao foi
    • Por LuanMartinsTI
      Tenho o seguinte problema, eu preciso dar um select em duas tabelas, ou ter dois selects tanto faz, eu fiz com inner join e com union all mas nao consigo ter o resultado que eu desejo
      O problema é o seguinte> Pra saber quantos usuarios eu tenho em cada grupo eu preciso dar um select na membros grupo com o id do grupo, mas eu preciso mostrar apenas os 5 primeiros grupos com mais gente, eu nao tenho na tabela falando grupo 1 tem 50 membros, eu tenho 50 linhas com grupo 1 e id do usuario, como eu transformo isso no que eu quero? a unica forma q eu pensei é criar um campo novo em grupos e colocar la o resultado de rowCount, mas gostaria de saber se é possivel fazer sem, eu ja consigo mostrar quantos usuarios cada grupo tem, eu nao consigo mostrar é em ordem e nao é so dar o asc o problema é na logica provavelmente, mas se for possivel resolver isso com uma unica query ficarei grato
      tabela 1
      grupos( id nome dono created stat ) tabela 2
      membros_grupo( id grupo_id user_id )  
      PHP
      public function ultimosGrupos($limite){ try { $query = "SELECT * FROM groups ORDER BY id ASC LIMIT :limite"; $this->Select = $this->Conn->prepare($query); $this->Select->bindParam(':limite' , $limite, PDO::PARAM_INT); $this->Select->execute(); if($this->Select->rowCount() > 0){ return $this->Select->fetchAll(PDO::FETCH_ASSOC); }else{ return FALSE; } } catch (PDOException $exc) { exibeMensagens("Erro ao consultar. {$exc->getMessage()}", WS_ERROR); } } public function users_por_grupo($id){ try { $query = "SELECT * FROM group_memberships WHERE group_id = :id"; $this->Select = $this->Conn->prepare($query); $this->Select->bindParam(':id' , $id, PDO::PARAM_INT); $this->Select->execute(); return $this->Select->rowCount(); } catch (PDOException $exc) { exibeMensagens("Erro ao consultar. {$exc->getMessage()}", WS_ERROR); } }  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.