У нас здесь вроде как баг.
Делаю запрос к серверу. Мне нужно получить последнее сообщение от устройства. Тестирую запрос messages/load_last, перевожу параметр t в читабельное время, остальное меня пока что не интересует.
POST http://testing.wialon.com/wialon/ajax.html -> svc=messages/load_last&sid=957¶ms={"itemId":17,"lastTime":1330288352,"lastCount":3,"flags":0,"flagsMask":0,"loadCount":3}
27/02/2012 07:02:11
27/02/2012 07:03:35
27/02/2012 07:03:36
Запросом я могу получить, как в инструкции сказано, некоторое количество последних сообщений. В инструкции нет информации какой из двух параметров count отвечает за количество результатов, поэтому я попробовал оба варианта. Делаю запрос на получение одного последнего сообщения. Ожидаем получить 27/02/2012 07:03:36.
POST http://testing.wialon.com/wialon/ajax.html -> svc=messages/load_last&sid=960¶ms={"itemId":17,"lastTime":1330288352,"lastCount":3,"flags":0,"flagsMask":0,"loadCount":1}
27/02/2012 07:02:11
и ещё раз
POST http://testing.wialon.com/wialon/ajax.html -> svc=messages/load_last&sid=961¶ms={"itemId":17,"lastTime":1330288352,"lastCount":1,"flags":0,"flagsMask":0,"loadCount":3}
27/02/2012 07:02:11
и вот так
POST http://testing.wialon.com/wialon/ajax.html -> svc=messages/load_last&sid=961¶ms={"itemId":17,"lastTime":1330288352,"lastCount":1,"flags":0,"flagsMask":0,"loadCount":1}
27/02/2012 07:02:11
Ни один из запросов не выдал мне последнее сообщение, вероятно на сервере не включена сортировка результатов в обратном порядке (ORDER BY id DESC или ORDER BY t DESC), поэтому команда messages/load_last даёт то же самое что messages/load_interval. И вообще не очень понимаю смысл в запросе указывать lastTime как начало периода. Даже из названия lastTime видно что это должен быть конец периода, а не начало. Уверен, этой командой будут пользоваться чтобы получить некоторое количество сообщений до такого-то времени, а не с какого-то. Не так ли?
Схематичное решение на Mysql:
SELECT * FROM messages WHERE t <= lastTime ORDER BY t DESC LIMIT lastCount
(t в базе данных должен быть проиндексирован или являться первичным ключем)
Параметр loadCount в таком случае требуется убрать, чтобы не вводить никого в заблуждение.
Pavel Skvortsov
pavel@gogps.eu
www.gogps.eu