Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Сокет "пропускает" (не получает) строки с трекера, помогите плз.
Форумы портала PHP.SU » » Работа с сетью » Сокет "пропускает" (не получает) строки с трекера, помогите плз.

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

1. brix - 22 Апреля, 2016 - 20:10:44 - перейти к сообщению
Доброго времени.
Уважаемые форумчане, проблема с потерей или неполучением, даже не могу четко сформулировать с чем))
Описание:
есть 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

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

Подскажите плиз что делаю не так??
Код может сумбурный, сорри новичек. липил из разных источников((
2. LIME - 23 Апреля, 2016 - 02:26:25 - перейти к сообщению
Тут самое место для node js
Или ратчет но нода полегче
(Добавление)
https://learn[dot]javascript[dot]ru/screencast/nodejs
3. brix - 23 Апреля, 2016 - 21:39:43 - перейти к сообщению
LIME пишет:
Тут самое место для node js
Или ратчет но нода полегче
(Добавление)
https://learn.javascript.ru/screencast/nodejs



То есть на PHP решить вопрос не получится?? или хотя бы намек, в чем может быть проблема??((((
4. Viper - 23 Апреля, 2016 - 22:52:07 - перейти к сообщению
brix пишет:
или хотя бы намек, в чем может быть проблема??
дебаг соединений. Иначе гадание на кофейной гуще.

 

Powered by ExBB FM 1.0 RC1