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