Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ninja_loko

"Escutando" um arquivo TXT...

Recommended Posts

Blza galera?

 

Estou com um problema que não sei como resolver a não ser aprendendo outra linguagem de programação...

Pq as únicas linguagens que sei, são PHP e AS1.0.

 

Problema: Eu tenho um equipamento que manda códigos em uma porta serial. Tenho um programa que captura essa porta (Sei que o PHP tem essa função, mas achei muito instável) e vai inserindo em um arquivo TXT cada vez que recebe um dado novo. E insiro esses dados do TXT no Mysql por um script PHP, mas tenho que executá-lo manualmente. E queria automatizar isso.

 

O que eu queria era que o PHP lê-se esse arquivo, filtrar o que precisava e depois inserir no Mysql.

Obs: Filtrar e inserir já sei fazer. O Problema está em ler o arquivo atualizado.

 

Na verdade para simplificar eh isso: [Porta serial] => [Filtrar dados] => [MySQL]

 

Mas como soh sei PHP: [Porta serial] => [Programa_Captura] => [Arquivo TXT] =>

 =>  [MySQL]

 

 

 

Olha a gambiarra que fiz!:

 

<?$cn = mysql_connect("servidor", "usuario", "senha");mysql_select_db("banco");$arquivo = "C:\logs.txt";function ler_logs(){	global $arquivo;	$fp = fopen($arquivo, "w");	$conteudo = fread($fp, filesize($arquivo));	fclose($fp);	return $conteudo;}$segundo2 = 99;while(1){	$segundo = Date("s");	if($segundo!=$segundo2){		if($segundo%1==0){			echo "Carregando... - ".$segundo."\r\n";			$conteudo =  ler_logs();			if($conteudo!=""){				$resultado = mysql_query("INSERT INTO tabela(dado) VALUES('$conteudo')");				echo $conteudo;			}		}		$segundo2 = Date("s");	}}mysql_close($cn);?>

Executei esse script pelo CLI do PHP (C:\php>php.exe script.php), pq achei mais estável.

Mas encontrei 2 erros....

- qndo não há nenhum dado no TXT, ele retorna falando que não é possível ler o arquivo porque FileSize=0... mesmo que inseridos dados no TXT, enquanto o programa é executado... não acontece nada... continua o erro...

- se houver mais de 1 linha no TXT, o CLI do PHP não consegue "ver" a outra linha... (\r\n...)

 

 

Alguém poderia ajudar?

 

Se alguém tem idéia melhor para colocar os dados no Mysql, ou contornar esses dois erros....

 

 

Já agradecendo por ler esse texto comprido!

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Blza galera?

 

Estou com um problema que não sei como resolver a não ser aprendendo outra linguagem de programação...

Pq as únicas linguagens que sei, são PHP e AS1.0.

 

Problema: Eu tenho um equipamento que manda códigos em uma porta serial. Tenho um programa que captura essa porta (Sei que o PHP tem essa função, mas achei muito instável) e vai inserindo em um arquivo TXT cada vez que recebe um dado novo. E insiro esses dados do TXT no Mysql por um script PHP, mas tenho que executá-lo manualmente. E queria automatizar isso.

 

O que eu queria era que o PHP lê-se esse arquivo, filtrar o que precisava e depois inserir no Mysql.

Obs: Filtrar e inserir já sei fazer. O Problema está em ler o arquivo atualizado.

 

Na verdade para simplificar eh isso: [Porta serial] => [Filtrar dados] => [MySQL]

 

Mas como soh sei PHP: [Porta serial] => [Programa_Captura] => [Arquivo TXT] =>

 =>  [MySQL]

 

 

 

Olha a gambiarra que fiz!:

 

<?$cn = mysql_connect("servidor", "usuario", "senha");mysql_select_db("banco");$arquivo = "C:\logs.txt";function ler_logs(){	global $arquivo;	$fp = fopen($arquivo, "w");	$conteudo = fread($fp, filesize($arquivo));	fclose($fp);	return $conteudo;}$segundo2 = 99;while(1){	$segundo = Date("s");	if($segundo!=$segundo2){		if($segundo%1==0){			echo "Carregando... - ".$segundo."\r\n";			$conteudo =  ler_logs();			if($conteudo!=""){				$resultado = mysql_query("INSERT INTO tabela(dado) VALUES('$conteudo')");				echo $conteudo;			}		}		$segundo2 = Date("s");	}}mysql_close($cn);?>

Executei esse script pelo CLI do PHP (C:\php>php.exe script.php), pq achei mais estável.

Mas encontrei 2 erros....

- qndo não há nenhum dado no TXT, ele retorna falando que não é possível ler o arquivo porque FileSize=0... mesmo que inseridos dados no TXT, enquanto o programa é executado... não acontece nada... continua o erro...

- se houver mais de 1 linha no TXT, o CLI do PHP não consegue "ver" a outra linha... (\r\n...)

 

 

Alguém poderia ajudar?

 

Se alguém tem idéia melhor para colocar os dados no Mysql, ou contornar esses dois erros....

 

 

Já agradecendo por ler esse texto comprido!

 

Abraços!

Bom dia Amigo,

 

Este sisteminha que quer criar é bem mais fácil que você pensa.

Qual é o sistema operacional que utiliza? Pelo visto ae no exemplo é windows né? Eu não sei se vai funcionar no windows, mas no linux eu coloco no Crontab (Agendador de Tarefas), dai você coloca de x em x tempo. Ou então deixar o sistema rodando em background (no windows eu não sei como faz).

 

Eu não sei se te ajudei muito, mas já da para ter noção como você vai fazer a parte de schadule.

 

Qualquer outra coisa me diz...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq que quando você gera as informações dentro desse arquivo TXT você jah naum manda gravar no banco?????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa! Boa Tarde!

 

Márcio RJ: Valew pela resposta! Posso sim colocar um servidor Linux, só está com windows, pois instalaram assim... e não quis fazer muita mudança... mas posso instalar um Linux... Estive procurando saber sobre o CronTab na internet... achei muito prático! E não parece ser muito difícil agendar processos. Só que, não achei nada sobre inserir no Mysql... Será que tem alguma coisa que ainda não vi? Mas valew pela dica!

 

 

wolfphw: As informações que passam pela porta serial são capturadas por um programa que gera um TXT... ele não consegue inserir direto no Mysql.. Daí ele gera o TXT em qualquer pasta que você quiser. Mas não está "filtrado" para inserir as informações no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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