Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для messad_el
14 / 14 / 2
Регистрация: 26.04.2013
Сообщений: 191

PHP скрипт работающий через соккет с большим колличеством клиентов

24.10.2013, 11:47. Показов 2292. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Товарищи! Возникла такая проблема.

Введение:
У меня скрипт на PHP который должен общаться через слушающий сокет с удалёнными железяками которые будут соединятся через GPRS.
Скрипт который слушает выбраный порт и как только в нём появляется клиент, он с ним соединяется и начинает обмениваться данными я слепил. Но проблема заключается в том что железяк таких много около ста тысячь может быть, а у меня скрипт может общаться только с одной железкой одновременно да и нужно что бы конкретный запущеный экземпляр скрипта работал со своим конкретным клиентом. Не могу понять как это реализовать.
Можете мне подсказать как это у людей делается, что мне можно почитать и т.д...
Дело в том что нет возможночсти написать отдельное серверное приложение например на C++. Хостинг чужой и можно реализовать стандартными инструментами вроде PHP. И да так как клиенты конектятся через GPRS серверу не может быть известен адрес клиента.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2013, 11:47
Ответы с готовыми решениями:

Объединить два PHP скрипта из одного Ларавель-проекта, в один работающий скрипт
Задача: Объединить два PHP скрипта из одного Ларавель-проекта, в один работающий скрипт. Ларавель версии-5.5 . Предполагаемая...

Совместимость GIGABYTE GA-990XA-UD3 (rev. 1.0) соккет am3+ и AMD Phenom II X4 965 Black Edition соккет am3
Есть мать GIGABYTE GA-990XA-UD3 (rev. 1.0) соккет am3+ есть проц AMD Phenom II X4 965 Black Edition соккет am3 они сойтись могут или...

Сервер с большим количеством клиентов
Собственно возник вопрос как организовать такое? Как люди делают сервера, которые при этом не падают и обслуживают одновременно 3000 и...

34
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
24.10.2013, 12:33
Цитата Сообщение от messad_el Посмотреть сообщение
...ста тысячь....
на php невозможно такое...

я поконкретней можна.. кусок кода хотябы где сокет создается.. бинд и асепт в цикле
0
 Аватар для messad_el
14 / 14 / 2
Регистрация: 26.04.2013
Сообщений: 191
24.10.2013, 12:40  [ТС]
Вот server.php
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
68
69
<?
    header('Content-Type: text/plain;');
    error_reporting(E_ALL ^ E_WARNING);
    set_time_limit(0);
    ob_implicit_flush();
    
    echo "-= Server =-\n\n<br/><br/>";
    $port    = $_POST['port'];
 
    try {
    
        echo 'Create socket ... ';
        if (($sock = socket_create_listen(1234, SOMAXCONN)) < 0) {
            throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n<br/>");
        } else {
            echo "OK\n<br/>";
        }
 
 
        do {
            echo 'Accept socket ... ';
            if (($msgsock = socket_accept($sock)) < 0) {
                throw new Exception('socket_accept() failed: '.socket_strerror(socket_last_error())."\n<br/>");
            } else {
                echo "OK\n<br/>";
            }
            $msg = "Hello, Client!";
            echo "Say to client ($msg) ... ";
            socket_write($msgsock, $msg, strlen($msg));
            echo "OK\n<br/>";
 
            do {
            
                echo 'Client said: ';
                if (false === ($buf = socket_read($msgsock, 1024))) {
                    throw new Exception('socket_read() failed: '.socket_strerror(socket_last_error())."\n<br/>");
                } else {
                    echo $buf."\n<br/>";
                }
                
                if (!$buf = trim($buf)) {
                    continue;
                }
                
                if ($buf == 'shutdown') {
                    socket_close($msgsock);
                    break 2;
                }
                
                echo "Say to client ($buf) ... ";
                socket_write($msgsock, $buf, strlen($buf));
                echo "OK\n<br/>";
                
            } while (true);
            
        } while (true);
 
    } catch (Exception $e) {
        echo "\n<br/>Error: ".$e->getMessage();
    }
    
    if (isset($sock)) {
    
        echo 'Close socket ... ';
        socket_close($sock);
        echo "OK\n<br/>";
    
    }
?>
0
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
24.10.2013, 12:41
я незнаю.. можно ли так но ( скокеты которые асепт возвращает ) в другой скрипт передать.. и уже в другом патоке их обрабатывать.. а вот как передать ( они числовые в php? )

но ста тысячь точно не потянет
0
 Аватар для messad_el
14 / 14 / 2
Регистрация: 26.04.2013
Сообщений: 191
24.10.2013, 12:43  [ТС]
Сто тысячь невозможно? Даже если на каждого клиента отдельный экземпляр скрипта запускать?

Добавлено через 1 минуту
Данные будут и строковые. Приборы передают серверу свои параметры, а сервер отправляет им команды.
0
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
24.10.2013, 12:44
Цитата Сообщение от messad_el Посмотреть сообщение
Сто тысячь невозможно? Даже если на каждого клиента отдельный экземпляр скрипта запускать?
а какой там объем данных ? как часто должны обмениватся они..? тоесть если там типо ооп там событие сюда шлет .. а события раз в несколька минут.. то можна ток надо ввести ид каждому клиенту и на подоби как в UDP чтоб четая очередной пакет сервак понял с кем он говорит отписал и закрыл асепт сокет.. тогда все в 1-ом скрипте можна .. ну и на серве массив держать с идами и т.д. ( незнаю как коректней сформулировать )
0
 Аватар для messad_el
14 / 14 / 2
Регистрация: 26.04.2013
Сообщений: 191
24.10.2013, 12:45  [ТС]
То есть один скрипт будет отлавливать клиентов, и передавать их другому который будет уже их обрабатывать?
0
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
24.10.2013, 12:50
Цитата Сообщение от messad_el Посмотреть сообщение
То есть один скрипт будет отлавливать клиентов, и передавать их другому который будет уже их обрабатывать?
ааа.. нет..

какой там объем данных что вообще от сервака требуется.. какая частота запросов от 1-ого клиента в среднем.. какой объем данных в среднем..

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

или там 1-3 команды которые он отсылает и все?

Добавлено через 2 минуты
Цитата Сообщение от messad_el Посмотреть сообщение
То есть один скрипт будет отлавливать клиентов, и передавать их другому который будет уже их обрабатывать?
это мое предположение ( ну чтобы TCP сокеты всегда были открыты у клиентов на уровне TCP сокета а не на верхнем уровне клиента / серва где еще номер пакетов вести надо и т.д. ( как в UDP ) ) на php наврятли такое можна ..
0
 Аватар для messad_el
14 / 14 / 2
Регистрация: 26.04.2013
Сообщений: 191
24.10.2013, 12:56  [ТС]
Тааак нужно подумать.... время разное будет потому что щас поясню:
На столбах висят приборы которые которые контролируют параметры сети(ток, напряжение и т.д...)
Есть владельцы этих приборов которые будут авторизовываться в моём приложении когда им понадобиться изменить настройку какого-то из их приборов или отследить дистанционно в реальном времени параметры которые он контролирует.
Вобщем параметры эти он должен присылать часто именно в то время когда ползователь хочет, остальное время они работают сами по себе, но связь с сервером поддерживают ибо должны быть в готовности начать обмен данными с ним.

Добавлено через 3 минуты
время обновления параметров на сервере которые присылает клиент не больше секунды. А когда пользователь не работает с прибором можно и пореже раз в минуту например.
0
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
24.10.2013, 12:57
Цитата Сообщение от messad_el Посмотреть сообщение
Тааак нужно подумать.... время разное будет потому что щас поясню:
На столбах висят приборы которые которые контролируют параметры сети(ток, напряжение и т.д...)
Есть владельцы этих приборов которые будут авторизовываться в моём приложении когда им понадобиться изменить настройку какого-то из их приборов или отследить дистанционно в реальном времени параметры которые он контролирует.
Вобщем параметры эти он должен присылать часто именно в то время когда ползователь хочет, остальное время они работают сами по себе, но связь с сервером поддерживают ибо должны быть в готовности начать обмен данными с ним.
задача сложная..

Есть владельцы этих приборов которые будут авторизовываться в моём приложении когда им понадобиться изменить настройку какого-то из их приборов или отследить дистанционно в реальном времени параметры которые он контролирует.

вот что это за приборы?

у вас есть четкая структура данных в пакетах которые присылают приборы и т.д. структура команд котыре они понимают ( я думаю их не очень многа( хотя.. ) раз параметры сети(ток, напряжение и т.д...)

что за столбы?
0
 Аватар для messad_el
14 / 14 / 2
Регистрация: 26.04.2013
Сообщений: 191
24.10.2013, 12:59  [ТС]
Сервер в одном сообщении может я думаю обойтись одним словом и цыфрой. А в обратку должно лезть мгого параметров в каком виде пока не придумал. Мне главное запустить что бы хоть сервак работал с нескими клиентами одновременно без коллизий. С остальными подводными камнями я столкнусь потом..
0
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
24.10.2013, 13:01
я думаю лучше написать отдельна прогу которая бы мониторила и при ответах от приборов заносила данные в бд а уже из нее пхп -> веб интерфейс кароче...

и еще вот ползователь хочет узнать показатели счетчиков... как будет связь с прибором? прибор имеет свой белый ип - и тоже биндит порт или же он например каждую секунду читает инфу с серва и если видит свой ид и команду шлет ответ
0
 Аватар для messad_el
14 / 14 / 2
Регистрация: 26.04.2013
Сообщений: 191
24.10.2013, 13:04  [ТС]
Цитата Сообщение от JxF-TEAM Посмотреть сообщение
задача сложная..

Есть владельцы этих приборов которые будут авторизовываться в моём приложении когда им понадобиться изменить настройку какого-то из их приборов или отследить дистанционно в реальном времени параметры которые он контролирует.

вот что это за приборы?

у вас есть четкая структура данных в пакетах которые присылают приборы и т.д. структура команд котыре они понимают ( я думаю их не очень многа( хотя.. ) раз параметры сети(ток, напряжение и т.д...)

что за столбы?
Дистанцию не надо, он знает на каком столбе он свой прибор повесил. Прибор шлёт значения силы тока, напряжения, смещения фаз, мощьности... и своё состояние(контактор выключен/включен и какой именно)

Что касается клиентской стороны она тоже в разработке синхронно с сервером, и я думаю что её можно будет разрабатывать уже с учётом возможностей сервера(так как с клиентской стороны меньше ограничений).
0
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
24.10.2013, 13:07
а вообще инфы почти нету..

раскажите все что знаете о приборах... ссылки на описание ( я думаю их API должен быть где то описан ведь

Добавлено через 1 минуту
Цитата Сообщение от messad_el Посмотреть сообщение
Дистанцию не надо, он знает на каком столбе он свой прибор повесил. Прибор шлёт значения силы тока, напряжения, смещения фаз, мощьности... и своё состояние(контактор выключен/включен и какой именно)

Что касается клиентской стороны она тоже в разработке синхронно с сервером, и я думаю что её можно будет разрабатывать уже с учётом возможностей сервера(так как с клиентской стороны меньше ограничений).
эээ тоесть вы производитель приборов .. еще не придумали им API
0
 Аватар для messad_el
14 / 14 / 2
Регистрация: 26.04.2013
Сообщений: 191
24.10.2013, 13:08  [ТС]
Цитата Сообщение от JxF-TEAM Посмотреть сообщение
я думаю лучше написать отдельна прогу которая бы мониторила и при ответах от приборов заносила данные в бд а уже из нее пхп -> веб интерфейс кароче...

и еще вот ползователь хочет узнать показатели счетчиков... как будет связь с прибором? прибор имеет свой белый ип - и тоже биндит порт или же он например каждую секунду читает инфу с серва и если видит свой ид и команду шлет ответ
Да! Об этом я говорил. У нас нет возможности написать отдельную прогу не на PHP ииначе бы этого вопроса не возникло бы. Хостинг надо будет орендовать.

Прибор не имеет белого ip так как связывается через gprs и там у них муть жуткая. по этому вариант с чтением с сервера инфы хотя бы раз в минуту или пол минуты нам только и остаётся.
0
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
24.10.2013, 13:10
силы тока, напряжения, смещения фаз, мощьности... и своё состояние(контактор выключен/включен и какой именно)

ну думаю в 24 байта тут инфы... ( несчитая заголовков пакета )

Добавлено через 1 минуту
тоесть вы хотите сделать сеть из 100000 приборов и приэтом
Цитата Сообщение от messad_el Посмотреть сообщение
У нас нет возможности написать отдельную прогу не на PHP ииначе бы этого вопроса не возникло бы. Хостинг надо будет орендовать.
дедик придется арендовать я думаю в любом случае
0
 Аватар для messad_el
14 / 14 / 2
Регистрация: 26.04.2013
Сообщений: 191
24.10.2013, 13:16  [ТС]
Цитата Сообщение от JxF-TEAM Посмотреть сообщение
задача сложная..

Есть владельцы этих приборов которые будут авторизовываться в моём приложении когда им понадобиться изменить настройку какого-то из их приборов или отследить дистанционно в реальном времени параметры которые он контролирует.

вот что это за приборы?

у вас есть четкая структура данных в пакетах которые присылают приборы и т.д. структура команд котыре они понимают ( я думаю их не очень многа( хотя.. ) раз параметры сети(ток, напряжение и т.д...)

что за столбы?
Приборы/столбы... Столб это образно, прибор может располагаться и в щитке. Прибор если интересно вот пример агалогичного прибора:http://indast.com/3-10-SCHET.html

Добавлено через 4 минуты
Да вот в этом-то и проблема, конторка у нас небогатая, а партии бывают разные 100000 это максимум их может быть и в десять раз меньше. Часть приборов уже выпущена за последние несколько лет они у правляются адаптером через RS-485 так вот теперь решили повесить на эти адаптеры ещё и GPRS модемы. Вопросом реализазции нашими средствами мы взрываем голову уже три недели. Остановились на PHP
0
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
24.10.2013, 13:18
Цитата Сообщение от messad_el Посмотреть сообщение
Приборы/столбы... Столб это образно, прибор может располагаться и в щитке. Прибор если интересно вот пример агалогичного прибора:http://indast.com/3-10-SCHET.html
ясно..

( оффтоп : интересно как там передачик рабит.. в заземленном мет. ящике рядом с силовой линеей )


но вы сами их производите .. либо собираетесь заказать готовые ( по идее во 2-м варианте в комплекте и ПО вместе с сервом должны быть ) а в 1-м.. какие у вас успехи в тех. части

Добавлено через 1 минуту
Цитата Сообщение от messad_el Посмотреть сообщение
Да вот в этом-то и проблема, конторка у нас небогатая, а партии бывают разные 100000 это максимум их может быть и в десять раз меньше. Часть приборов уже выпущена за последние несколько лет они у правляются адаптером через RS-485 так вот теперь решили повесить на эти адаптеры ещё и GPRS модемы. Вопросом реализазции нашими средствами мы взрываем голову уже три недели. Остановились на PHP
тоесть вы завод и паралельно еще и свой мониторинг организовать хотите?

проста я думал что заводы такого типа ну например жкх поставляют партию.. им хост снимают на него монитринг и все... ( ну еще гарнтия )
0
 Аватар для messad_el
14 / 14 / 2
Регистрация: 26.04.2013
Сообщений: 191
24.10.2013, 13:25  [ТС]
Цитата Сообщение от JxF-TEAM Посмотреть сообщение
ясно..

( оффтоп : интересно как там передачик рабит.. в заземленном мет. ящике рядом с силовой линеей )


но вы сами их производите .. либо собираетесь заказать готовые ( по идее во 2-м варианте в комплекте и ПО вместе с сервом должны быть ) а в 1-м.. какие у вас успехи в тех. части

Добавлено через 1 минуту


тоесть вы завод и паралельно еще и свой мониторинг организовать хотите?

проста я думал что заводы такого типа ну например жкх поставляют партию.. им хост снимают на него монитринг и все... ( ну еще гарнтия )
Да мы их полностью производим и разрабатываем, но апаратная часть меня не волнует будет ли он там в металическом ящике или снаружи. Да мы хотим организовать свой мониторинг, более того скажу что подобный проект уже был через GSM сети но там было всё по другому организовано и сервер был не нужен клиент сам со своего компьютера связывался через адаптер с GSM модулем с прибором. Но теперь какой-то сертификат перестал работать и нам надо всё переделать и производить новые уже с новой системой.

Ладно мы ушли от темы...
0
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
24.10.2013, 13:30
RS-485 а вы можете про это расказать поконкретней..

http://www.contravt.ru/?id=1660

тоесть провода от адаптера куда уходят? к вам в центр управления .. или на "ПК гдето на крыши например" дальше в инет и к вам на мониторинг

и какой средний объем данных передавался от 1-ого счетчика через RS-485 ( как я понял в конце что то типо этого должно быть http://contravt.ru/I7520-povto... S485-RS232) и это должно показыватся
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2013, 13:30
Помогаю со студенческими работами здесь

Двухсторонний обмен сообщениями через соккет
есть клиент и сервер. организовать одностороннюю отправку сообщений получается. А как организовать отправку сообщений в две стороны? то...

Клиент-Сервер с очень большим количеством клиентов
Суть такова : видел очень много статей и исходных колов по реализации клиент-серверных приложений, но во всех одна проблема - для каждого...

Клиент-сервер + MySQL получение таблицы через соккет!
Задача следующая: Сервер без gui, подключается к бд MySQL, клиент с gui подключается к серверу по Tcp и получает данные из таблиц бд или...

Запрос к бд через php скрипт
Доброго времени суток, сделал php скрипт для вывода данных из бд. Данные он вроде как выводит, а так же выводит оч много ошибок. Вот код...

Отправка сообщений через PHP скрипт.
Здраствуйте всем. Нигде не могу найти информации, как отправлять сообщения на какой-либо сайт через ПХП скрипт. То есть, к примеру, создан...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru