-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnetAISserver.php
68 lines (56 loc) · 2.56 KB
/
netAISserver.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
/* netAIS server
*/
ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
//ini_set('error_reporting', E_ALL & ~E_STRICT & ~E_DEPRECATED);
ob_start(); // попробуем перехватить любой вывод скрипта
$self = realpath(__FILE__); // определяем реальный каталог самого скрипта, не ссылки
$path_parts = pathinfo($self);
chdir($path_parts['dirname']); // задаем директорию выполнение скрипта
require('fcommon.php'); //
require('params.php'); //
$netAISJSONfilesDir = getAISdFilesNames($netAISJSONfilesDir); // определим имя и создадим каталог для данных netAIS
$netAISserverDataFileName = $netAISJSONfilesDir.'netAISserverData';
//echo "netAISserverDataFileName=$netAISserverDataFileName<br>\n";
$member = json_decode(@$_REQUEST['member'],TRUE, 512, JSON_BIGINT_AS_STRING); // сведения от клиента, JSON_BIGINT_AS_STRING возможно поможет для строк -- числовых кодов. Не помогает.
//echo "member: <pre>"; print_r($member); echo "</pre>\n";
if((!@$member['lon'])or(!@$member['lat'])) {
$aisData = 'Spatial info required, sorry.';
http_response_code(400);
goto OUT;
}
$member['netAIS'] = TRUE;
clearstatcache(TRUE,$netAISserverDataFileName);
if(file_exists($netAISserverDataFileName)) {
$aisData = json_decode(file_get_contents($netAISserverDataFileName),TRUE); //
}
else {
$aisData = array();
}
//echo "aisData: <pre>"; print_r($aisData);echo "</pre\n>";
updAISdata($member); // запишем обратившегося клиента в общий файл
// Почистим общий файл от старых целей
$now = time();
foreach($aisData as $vehicle => &$data) {
if(($now-$data['timestamp'])>$noVehicleTimeout) unset($aisData[$vehicle]);
}
//echo "aisData: <pre>"; print_r($aisData);echo "</pre\n>";
file_put_contents($netAISserverDataFileName,json_encode($aisData,JSON_UNESCAPED_UNICODE));
clearstatcache(TRUE,$netAISserverDataFileName);
http_response_code(200);
OUT:
$aisData=json_encode($aisData,JSON_UNESCAPED_UNICODE);
ob_end_clean(); // очистим, если что попало в буфер
header('Content-Type: application/json;charset=utf-8;');
echo "$aisData \n";
return;
function updAISdata($vehicleInfo) {
/**/
global $aisData;
$vehicle = @$vehicleInfo['mmsi'];
if(!$vehicle) return; // оно может быть пустое
foreach($vehicleInfo as $opt => $value) {
$aisData[$vehicle][$opt] = $value; //
}
}
?>