Script PHP não funciona pelo Cron [RESOLVIDO]

1. Script PHP não funciona pelo Cron [RESOLVIDO]

Albert Viudes <span class='filtrado'>[*****]</span>
Lord_Dracon

(usa Debian)

Enviado em 28/06/2009 - 07:52h

Bom dia!

É meu primeiro tópico aqui no vivaolinux.com.br, não sei se é a melhor seção para eu postar a minha dúvida, mas não encontrei outra compatível. Se a moderação achar necessário, favor movê-lo para a respectiva seção.

Trabalho com um Servidor Ubuntu 7.10 (Server). Desenvolvi um script em PHP para efetuar um backup do banco de dados MySQL e dos arquivos em /var/www.

Dentro do script, em dado momento, eu chamo a função shell_exec() do PHP para o seguinte comando:
/usr/bin/mysqldump -u root -p****** -f DATABASE TABELA | gzip -9 -c > DATABASE.TABELA.sql.gz

Esse shell está dentro de um laço while que serve para dumpar todas as tabelas, uma por arquivo, já compactando elas, e após isso ele compacta o conteúdo do /var/www.

Agora vem a parte intrigante:

O script só funciona quando eu o executo manualmente no terminal. Quando eu coloco o script no Cron, ele começa a ser executado, e durante esses dumps, ele simplesmente é interrompido do nada, dumpando apenas algumas tabelas e finalizando em seguida.


A versão do Kernel é:
initrd.img-2.6.22-14-server [Ubuntu 7.10 \n \l]

O script está configurado no root do Cron da seguinte maneira:
00 01 * * * /usr/bin/php /backups/backup.php

As permissões do arquivo em questão é:
-rwxrwxrwx 1 webadmin webadmin 13K 2009-06-27 03:16 backup.php

A versão do cliente PHP é:
PHP 5.2.3-1ubuntu6.3 (cli) (built: Jan 10 2008 09:38:41)

A versão do mysqldump é:
mysqldump Ver 10.11 Distrib 5.0.45, for pc-linux-gnu (x86_64)

Eu já pesquisei em vários lugares e não faço a mínima idéia do porque que quando eu rodo o script manualmente ele funciona e através do Cron ele não funciona.

Também já tentei outras funções do PHP para chamar o shell (como a system(); exec(); passthru();), e em todas acontece o mesmo. Funciona manualmente mas quando o Cron executa interrompe no meio.

Alguém tem alguma sugestão do por que disso acontecer?

Desde já, obrigado pela atenção!


  


2. Re: Script PHP não funciona pelo Cron [RESOLVIDO]

kleber galucio
klebrr

(usa Linux Mint)

Enviado em 28/06/2009 - 10:07h

vc pode limpar o arquivo /var/log/messages
usando o comando #echo >/var/log/messages
agendar o cron pra uns 2 minutos a frente da hora atual
aguardar a execução do cron
verificar novamente o arquivo /var/log/messages
#cat /var/log/messages
Outras dicas:
Aqui tenho o script do cacti que executa sem problemas a cada 5 minutos
ex:

*/5 * * * * daemon php /usr/local/apache2/htdocs/cacti/cmd.php > /dev/null 2>&

note que especifiquei o usuario daemon e a saida do comando termina com & ou seja envia para o segundo plano.
Assim a tarefa não é interrompida até que seja concluída.

espero que ajude.



3. Re: Script PHP não funciona pelo Cron [RESOLVIDO]

Albert Viudes <span class='filtrado'>[*****]</span>
Lord_Dracon

(usa Debian)

Enviado em 01/07/2009 - 21:33h

Olá,

Eu tentei isso que você sugeriu mas não tinha nenhuma informação relevante nos LOGs. Também tentei o 2>& mas não funcionou.

Contudo, eu instalei o sendmail via apt-get somente para o Cron mandar um email pro root (/var/mail/root) com os echos dos programas que ele executa, e somente pelo fato deu ter instalado o sendmail o script funcionou.

Vai entender.

Mas valeu mesmo assim!


4. Re: Script PHP não funciona pelo Cron [RESOLVIDO]

Rafael Bezerra Correia da Silva
bodaope

(usa Ubuntu)

Enviado em 14/07/2011 - 18:17h

olá, eu estou com o mesmo problema de vocês, eu tou usando o ubuntu desktop 10.4 e estou usando uma maquina virtual para teste onde eu tenho um script php que envia email usando o phpmailer, ai tava usando esse script para ver se está funcionando o cron e não está, queria q ele enviasse email de 1 em 1 minuto e na minha monografia eu consegui usar ele, mas não sei pq não consigo agora, eu tou usando maquina virtual pois seria um teste para eu configurar no cron do servidor daqui da empresa um comando que ele vai executar no banco, mas nem o de email pegou =(

Segue as configurações do meu crontab

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
*/1 * * * * /var/www/comando/cronsms.php
#


Eu não sei o que está errado :( alguém poderia me ajudar?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts