Obtendo dados vazios ao ler o arquivo de texto e enviar dados lidos para url pelo cURL no linux

1

Eu tenho um arquivo de texto chamado read_data.txt in /var/www/html/ directory. Eu quero ler os dados por curl , enquanto o conteúdo do arquivo será alterado. Então eu criei um script bash . Ele está lendo dados enquanto o conteúdo é alterado e envia o conteúdo por email. Mas, em vez de email, quero enviar esses dados para um URL específico.

Estou usando o script abaixo.

curl -d data=@/var/www/html/read_data.txt" http://domain.tld/testing_receive_data/index.php/check_data_controller/check_data

O URL acima está recebendo todos os dados de postagem e convertendo a matriz de postagens em dados JSON pela função json_encode php e registra-os.

curl -d data=@/var/www/html/read_data.txt" http://domain.tld/testing_receive_data/index.php/check_data_controller/check_data

Quando estou executando o código acima no shell do Linux, os dados JSON são mostrados como vazios: {"data"=[]}

    
por Judhisthira Sahoo 23.12.2016 / 05:57

1 resposta

0

Eu posso pensar em algumas causas possíveis.

  1. Seu programa gravando o arquivo read_data.txt bloqueou o arquivo exclusivamente, então curl não pôde abrir o arquivo. Nesse caso, você pode testar facilmente com outro programa para apenas descartar o conteúdo usando cat ou tail
  2. Enquanto o arquivo read_data.txt está obtendo mais dados, anexando seu conteúdo, este é o ponto que eu não entendo porque você não esperou o arquivo terminar, os dados postados não estão completos, então o seu programa de php não pode traduzir eles em json. Verifique sua entrada do lado do php.

Uma possível solução é, em vez de despejar os dados longos e grandes no destino read_data.txt , basta fazer o download em um arquivo tmp como read_data.x4GwkQ.txt e, quando você terminar a tarefa, basta renomeá-la você não bloqueou exclusivamente ( O_EXCL na função abrir ).

Ou apenas amarre-os em um arquivo de bloqueio externo com flock . Quais comandos Unix podem ser usados como um semáforo / bloquear?

    
por 23.12.2016 / 07:13