Linuxでテキストファイルを読み込んでいる間に空のデータを取得し、cURLを介して読み取ったデータをURLに送信する

Linuxでテキストファイルを読み込んでいる間に空のデータを取得し、cURLを介して読み取ったデータをURLに送信する

read_data.txtディレクトリ内のテキストファイルを呼び出しました/var/www/html/curlファイルの内容が変わったらデータを読みたいです。だからスクリプトを作成しましたbash。コンテンツが変更されたら、データを読み、電子メールでコンテンツを送信します。ところで、そのデータをメールではなく特定のURLに送信したいと思います。

以下のスクリプトを使用しています。

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

上記のURLはすべての投稿データを受け取り、php関数を介してjson_encode投稿配列をJSONデータに変換して記録しています。

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

Linuxシェルで上記のコードを実行すると、JSONデータが空であることがわかります。{"data"=[]}

答え1

考えられる理由はいくつかあります。

  1. プログラムがファイルに書き込むと、ファイルをread_data.txt単独でロックするため、curlファイルを開くことができません。この場合、他のプログラムで簡単にテストしてcatコンテンツを消費したりダンプしたりできます。tail
  2. ファイルがread_data.txtより多くのデータを取得してコンテンツを追加するときにファイルが完了するのを待たない理由は理解できません。公開されたデータは不完全なため、PHPプログラムはそのデータをjsonに変換できません。 PHP側で入力を確認してください。

1つの可能な解決策は、read_data.txtたとえば、read_data.x4GwkQ.txtタスクの完了時に特にロックされていない場合O_EXCL開いている機能)。

または外部ロックファイルにバインドしますflockセマフォ/ロックとして使用できるUnixコマンドは何ですか?

関連情報