Olá, boa tarde!
Preciso enviar diariamente uma consulta (Com exportação) por email, em um horário especifico, alguém conseguiria me ajudar?
Olá, boa tarde!
Preciso enviar diariamente uma consulta (Com exportação) por email, em um horário especifico, alguém conseguiria me ajudar?
Envia link por email para acesso externo a app, coloca no cron job para periodizsar o envio
Boa tarde Haroldo,
Estou fuçando na ferramenta ainda, não conheço as possibilidades, tem alguma documentação para isso?
Obrigado
Sugeri um Conceito, que é comeu faço.
Requer conhecimento avançado php, para fazer como sugeri de forma segura.
Wisllan, aqui resolvi assim:
Criei uma aplicação Blank com a rotina que extrai os dados que preciso exportar e grava em um arquivo no servidor. Depois, na rotina, disparo um email com esse arquivo anexado e pronto.
Em um dos servidores (Linux), configurei o Cron para executar a rotina às 05:30h, exceto aos domingos.
//# Envia os e-mails com resumo de registros do dia anterior. De segunda a sábado.
30 05 * * 1-6 lynx -dump https://servidor/pasta/rotina.php;
Para não acumular arquivos no servidor, uma outra programação no Cron os remove diariamente:
//# Remove os arquivos gerados pela exportação de registros em dias anteriores
00 04 * * * find /var/www/webroot/ROOT/tmp/* -maxdepth 1 -amin +3 -exec rm -rf ‘{}’ ;
Espero que ajude!
Nelson,
tem poderia passar o código que vc usa para gerar por exemplo em excell um arquivo resultado de uma consulta ?
Abraço.
Evaldo
Evaldo, as rotinas de exportação que tenho, geram arquivos .txt ou .csv, para que o cliente faça download e importe em seu sistema. Como sabe, arquivos CSV são abertos normalmente (sem formatação) pelo Excel. Faço assim:
$sql = “SELECT Campo1, Campo2, Campo3 FROM tabela WHERE …”;
sc_select(rs, $sql);
Arquivos grandes gravo compactados para agilizar o download:
$Reg = ‘Titulo Campo1; Titulo Campo2; Titulo Campo3’ . “\r\n”; // Cabeçalho
while (!$rs->EOF) {
$Reg .= $rs->fields[‘Campo1’] . ‘;’ . $rs->fields[‘Campo2’] . ‘;’ . $rs->fields[‘Campo3’] . ‘;’ . “\r\n”;
$rs->MoveNext();
}
$rs->Close();
// Instancía a Classe Zip
$zip = new ZipArchive();
// Cria o arquivo zip
if ($zip->open($DirRaiz . $DirTmp . $NmArquivo . ‘.zip’, ZIPARCHIVE::CREATE) == true) {
// Insere no arquivo zip
$zip->addFromString($NmArquivo . ‘.csv’, $Reg);
$zip->close();
$url = $DirTmp . $NmArquivo . ‘.zip’;
sc_redir($url, “”, “_parent”); // Download
} else {
$zip->close();
sc_ajax_message (‘Ocorreu uma falha ao gravar o arquivo. Tente novamente.’, ‘Exportação’, “timeout=0”);
}
Arquivos pequenos gravo direto no servidor, sem compactar:
$NmArq = ‘…/tmp/’ . NomeArquivo.csv’; // Pasta e nome arquivo
$Arquivo = fopen($NmArq, “a”);
$Reg = ‘Titulo Campo1; Titulo Campo2; Titulo Campo3;’ . “\r\n”; // Cabeçalho
fwrite($Arquivo, $Reg);
while (!$rs->EOF) {
$Reg .= $rs->fields[‘Campo1’] . ‘;’ . $rs->fields[‘Campo2’] . ‘;’ . $rs->fields[‘Campo3’] . ‘;’ . “\r\n”;
fwrite($Arquivo, $Reg);
$rs->MoveNext();
}
fclose($Arquivo);
Caro Nelson,
muito show seu código e simples de aplicar.
obrigado pela ajuda.
abração.
Evaldo Baroni