0

Web サイトに Python スクリプトと PHP ページがあります。次の方法でcsvファイルを作成し、データを書き込む必要があります-

PHP はリクエストを処理し、変数を渡してGETPython スクリプトを呼び出します。これは JSON 形式です。ここのスクリプトは次のようになります-shell_execGET

...
$var_a = $_GET['a'];
$var_b = $_GET['b'];
$var_c = $_GET['c'];
$post_data = array('item' => 'get-list',
    'var a' => "$var_a",
    'var b' => "$var_b",
    'var c' => "$var_c"
    );
$json_data = json_encode($post_data);
$temp = shell_exec('python process_data.py "' . $json_data .'"');
echo $temp;
...

このスクリプトは非常に単純で、GET変数を収集してそのJSONオブジェクトを形成するだけです。このデータは に渡されprocess_data.py、データが処理され、データが csv ファイルに保存されます。コードは次のとおりです。

import sys, json, time, csv
json_data = json.dumps(sys.argv[1])
def scr(json_data):
    json_data = json_data
    count = 0
    json_list = json_data.split(',')
    for i in json_list:
        count=count+1
    if(count==5):
        lati = json_list[0].strip('{')
        longi = json_list[1]
        datestmp = json_list[2]
        timestmp = json_list[3]
        out = open('file.csv', 'w')
        out.write('%s;' % lati.split(':')[1])
        out.write('\n')
        out.write('%s;' % longi.split(':')[1])
        out.write('\n')
        out.write('%s;' % datestmp.split(':')[1])
        out.write('\n')
        out.write('%s;' % timestmp.split(':',1)[1])
        out.write('\n')
        out.close()
        print 'Latitude: ',lati.split(':')[1],', Longitude: ',longi.split(':')[1],', Datestamp: ',datestmp.split(':')[1],', Time: ', timestmp.split(':',1)[1]
    else:
        print 'Wrong data received'

scr(json_data)

すべてがうまくいっています。データが処理され、保存されます。PHP スクリプトは、現在のデータもデータベースに保存します。したがって、PHP は 2 つの操作を行います。1. データをデータベースに保存します。2. データを Python スクリプトに渡し、データを CSV ファイルに保存します。

ただし、GETデータは定期的な時間間隔 (たとえば 1 秒または 2 秒) で送信されます。したがって、Python ファイルへの呼び出しは、これらの間隔で定期的に行われます。1 ~ 2 秒ごとに CSV ファイルを開き、そこにデータを書き込む必要があります。これにより、処理が遅くなります。

データが来るまでCSVファイルを開いたままにしGETて、長時間リクエストが行われなかったときに閉じるようにしたい。そうする方法はありますか?

4

0 に答える 0