Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Для профи > PHP АПИ сервер по протоколу TCP


Автор: elianyyf 14.6.2016, 18:08
Привет. Дайте пожалуйста совет по технологиям для данной задачи
Задача следующая:
Есть у нас, например, андроид приложение которое отсылает каждую минуту какие-то данные, например, свой номер телефона, на сервер по протоклу TCP на АПИ, server.com?phone=1234
Сервер должен просто ложить в бд этот телефон.
Какие технологии юзать, что бы сервер выдержал хотя бы 100 к запросов в минуту, и данные json(в нашем случае { phone: 1234 }) транспортировались по протоколу TCP . Возможно другой язык посоветуете для сервера, что-то более быстрое, но пока интересует пхп.
Я так понял на сокетах это делается, только я не понял как передать приложению на сервер тогда
Если пхп под эту задачу не подходит, подскажие тогда технологию и ЯП
Заранее спасибо.

Автор: barmaley4ik 15.6.2016, 11:31
тут наверно не  TCP, а http(s) протокол, нужен.. я так понимаю, нужен RESR server?!))). Посмотри сайт дримфактори, у них есть возможности разворачивания REST серверов.. а на своем железе надо тестить. В любом случае надо свое железо. Возможно под каждое соединение создавать процесс, по окончанию убивать его.. Это так мысли слух. Все покажет только тестирование и прямые руки.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/PHP-API-server-po-protokolu-TCP-id57601e0fae201567218b4567#findElement_E7045_5761124eae2015a656864262_0

Автор: ksnk 15.6.2016, 13:02
Цитата(elianyyf @  14.6.2016,  18:08 Найти цитируемый пост)
Какие технологии юзать, что бы сервер выдержал хотя бы 100 к запросов в минуту, и данные json(в нашем случае { phone: 1234 }) 

Такой трафик, вообще говоря - большой. Обычно, для обслуживания такого дела уже нужны достаточно серьезные хостинги, хотя бы для безпроблемной доставки трафика к серверу. То есть, сразу возникает серьезный хостинг с серьезной абоненской платой... Может разумнее для начала ориентироваться на более скромные оценки потребностей?  smile
Если с деньгами все в порядке - можно ограничится php, но думать об облаках, highload и разных других непростых вещах... 
Если с оценками все правильно - можно закладываться на более низкоуровневый протокол доставки данных. TCP или UDP. это позволит сократить трафик до разумных величин, хотя выделенный сервер все равно будет нужен. Да и приложение на стороне клиента потребуется более сложное Соответственно, php отпадает.
Можно попробовать слепить приложение на nodeJS, она уже достаточно быстра.

Автор: frostlatte 16.6.2016, 14:57
Модератор: Сообщение скрыто.

Автор: _zorn_ 18.6.2016, 17:52
Цитата(barmaley4ik @  15.6.2016,  18:31 Найти цитируемый пост)
тут наверно не  TCP, а http(s) протокол, нужен..

Ну да, а хттп работает не через ТЦП...
Цитата(ksnk @  15.6.2016,  20:02 Найти цитируемый пост)
Можно попробовать слепить приложение на nodeJS, она уже достаточно быстра. 

А можно слепить из того ЧТО ЗНАЕТ ТОТ КТО ЗАДАЛ ВОПРОС.
Цитата(ksnk @  15.6.2016,  20:02 Найти цитируемый пост)
Да и приложение на стороне клиента потребуется более сложное Соответственно, php отпадает.

Не понятно как пхп вообще к клиентской части относится. Я так понимаю что вопрос не в ЫНТЫРПРАЙЗ ПРИЛОЖЕНИЯ ДЛЯ РЫНКА И ВООБЩЕ, а просто чтобы работало. 
Чел про нагрузку просто спросил...

Мой ответ - не слушай никого. ПХП как минимум НЕ медленнее чем остальные (а даже быстрее). Вопрос в настройке.

Автор: ksnk 20.6.2016, 12:27
Цитата(_zorn_ @  18.6.2016,  17:52 Найти цитируемый пост)
А можно слепить из того ЧТО ЗНАЕТ ТОТ КТО ЗАДАЛ ВОПРОС.

Цитата(elianyyf @  14.6.2016,  18:08 Найти цитируемый пост)
 Возможно другой язык посоветуете для сервера

?

Цитата(_zorn_ @  18.6.2016,  17:52 Найти цитируемый пост)
Чел про нагрузку просто спросил...

Пусть об этом сам автор скажет? Ошибся он на пару нулей в оценке или все точно...

Насчет сложности - послать запрос по url адресу - во всех системах программирования - один системный(библиотечный) вызов. А вот постлать TCP пакет - это уже нужно наворачивать довольно много строк. Это и есть - "более сложное приложение". php тут совсем ни причем, хотя тезис иллюстрируется и им тоже. 

Автор: _zorn_ 23.6.2016, 21:57
Цитата(ksnk @  20.6.2016,  19:27 Найти цитируемый пост)
php тут совсем ни причем, хотя тезис иллюстрируется и им тоже.  

Да ладно ? Типо через fsockopen я не смогу послать произвольный TCP пакет ?

Просто не понял ваши распинания. Воспринял как личное
Цитата(ksnk @  15.6.2016,  20:02 Найти цитируемый пост)
Соответственно, php отпадает.


Автор: ksnk 23.6.2016, 23:24
На клиентской стороне, к примеру, java. На ней get'ом послать что-то на сервер, не одна строка, а штук 5-6. Так что со сложностью клиента я, вероятно, загнул.

Мое предложение - отказаться от http и пользоваться UDP или TCP пакетами. В этом случае нужен сервер. Сервер на nodeJS, работающий под нагрузкой я видел, а вот tcp - сервер на PHP - нет, под нагрузкой не видел. Теперь понятнее распинания?

Автор: Envy 24.6.2016, 13:09
Проще и правильнее будет написать серверную часть на том, что вам знакомо, а потом натравить на него какой-нибудь https://httpd.apache.org/docs/2.4/programs/ab.html и по полученным результатам смотреть, что оптимизировать.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/PHP-API-server-po-protokolu-TCP-id57601e0fae201567218b4567#findElement_E7045_576d06c8ae2015bc250483b1_0

Автор: barmaley4ik 24.6.2016, 15:26
Цитата

   Ну да, а хттп работает не через ТЦП...
   

В данном случае поверх TCP ))).
Да и автору не нужно выдумывать велосипед, гугл в помочь, RESTserverov придостаточно, на которых можно написать собственное АПИ, а клиентское приложение написать на том, что знает.. а дальше тесты, тесты, тесты...

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/PHP-API-server-po-protokolu-TCP-id57601e0fae201567218b4567#findElement_E7045_576d26faae20155a4a0484ee_0

Автор: _zorn_ 26.6.2016, 15:06
Да блин. Вы реально тут письками решили померяться или что ?
user posted image

В данном случает в виде заказчика ТС...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)