Eu posso pensar em algumas causas possíveis.
- Seu programa gravando o arquivo
read_data.txt
bloqueou o arquivo exclusivamente, entãocurl
não pôde abrir o arquivo. Nesse caso, você pode testar facilmente com outro programa para apenas descartar o conteúdo usandocat
outail
- 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?