PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 2
brix Отправлено: 23 Апреля, 2016 - 21:39:43 • Тема: Сокет "пропускает" (не получает) строки с трекера, помогите плз. • Форум: Работа с сетью

Ответов: 3
Просмотров: 1203
LIME пишет:
Тут самое место для node js
Или ратчет но нода полегче
(Добавление)
https://learn.javascript.ru/screencast/nodejs



То есть на PHP решить вопрос не получится?? или хотя бы намек, в чем может быть проблема??((((
brix Отправлено: 22 Апреля, 2016 - 20:10:44 • Тема: Сокет "пропускает" (не получает) строки с трекера, помогите плз. • Форум: Работа с сетью

Ответов: 3
Просмотров: 1203
Доброго времени.
Уважаемые форумчане, проблема с потерей или неполучением, даже не могу четко сформулировать с чем))
Описание:
есть GPS трекер, отправляет простые строки с координатами на сервер. Сервер с помощью такого PHP скрипта слушает порт и пишет полученное в базу.

PHP:
скопировать код в буфер обмена
  1.  
  2.   ini_set('display_errors', 'On');
  3.  
  4.   $port = 10003;
  5.   $socket=socket_create_listen($port);
  6. //проверка сокета
  7.   if( !$socket ) exit( "На порт: ".$port.socket_strerror( socket_last_error() ) );
  8.   else echo 'Socket_create_listen on '.$port."\r\n";
  9.  
  10. //установка повторного использования сокета
  11.   if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
  12.   echo 'Cannot set option: '.socket_strerror(socket_last_error())."\r\n";
  13.   }
  14.   $rval = socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR);
  15.         if ($rval === false) {
  16.     echo 'Cannot GET option: '.socket_strerror(socket_last_error())."\r\n";
  17.         } else if ($rval !== 0) {
  18.     echo 'Option SO_REUSEADDR is set';
  19.         }
  20.  
  21. //цикл записи, (убрал часть подключения к базе, там все работает корректно)
  22.  
  23. do {
  24.   $connect = socket_accept($socket);
  25.   $result  = socket_read($connect,1024);
  26.   $l= mysql_query ("INSERT INTO tracks  (text) VALUES ('$result')");
  27.                 mysql_close ();
  28.   }
  29. while(true);



Трекер отправляет строки типа (0**********BR00160422A5131.0715N03115.1547E000.21658060.000000000000L00000000)

и настроен отправлять их каждые 20 секунд.

НО ПРОБЛЕМА, сервер получает данные с интервалом 5 минут в среднем.

Но если отправлять данные через адрессную строку:

http://127[dot]0[dot]0[dot]1:10003/?send=HI

сервер благополучно принимает соединение и записывает в базу, даже если они приходят по пару раз в секунду.
САМОЕ удиВиТЕЛЬНОЕ ПРИ ЭТОМ, проскакивают месседжи от трекера, с нужной периодичностью.
Строки приходят разные. следовательно трекер генерит трафик, но сервер не принимает часть данных.

Подскажите плиз что делаю не так??
Код может сумбурный, сорри новичек. липил из разных источников((

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB