http сервер на php

Я хочу создать соединение http-сокета для сервера в php для нескольких клиентов. Как мне это сделать ? Мне нужен какой-то ресурс.

Сначала я пытался создать сервер в java. Я создаю сервер в java. И пытаюсь получить доступ из приложения для Android. Но сервер не может найти клиента. Но когда я создаю клиента в java, он работал. Как мне решить эту проблему???


person Diptopol Dam    schedule 09.05.2011    source источник
comment
Обязательно следите за таймаутами выполнения. Кроме того, насколько мне известно, в нем отсутствуют потоки, которые вы видите на большинстве веб-серверов. Другой язык, вероятно, был бы лучшим выбором, если это возможно.   -  person jocull    schedule 09.05.2011
comment
Вы можете посмотреть Nanoserv nanoserv.si.kz или PEARs Net_Server pear.php.net/package/Net_Server   -  person mario    schedule 09.05.2011
comment
Какой веб-сервер вы используете? или вы хотите создать свой собственный веб-сервер? не будет ли это изобретением велосипеда?   -  person Muhammad Ummar    schedule 18.05.2011


Ответы (5)


Взгляните на эту статью:

Написание сокет-серверов на PHP от Zend

Также попробуйте с Google:

http://www.google.com/search?aq=0&oq=php+socket+server+mul&sourceid=chrome&ie=UTF-8&q=php+socket+server+multiple+clients

person Adnan    schedule 09.05.2011

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

Единственным плюсом является то, что вы можете использовать fork для ответвления другого процесса PHP для обработки клиента, но вы становитесь очень сложным.

Другой язык был бы гораздо более подходящим для такого типа разработки.

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

person Rudi Visser    schedule 09.05.2011

Вы пытаетесь использовать PHP для чего? Имейте в виду, мне нравится PHP, и я работаю с ним почти каждый день, но, пожалуйста, помните, что PHP сам по себе основан на запросе и ответе и не очень подходит для длительных процессов. В некотором роде это может быть интересно, но если вы пытаетесь написать веб-сервер с нуля, используя PHP, вы можете пересмотреть свой выбор языка.

Тем не менее, вы можете создать сокет, выступающий в роли сервера, и слушать к входящим пакетам. Я все еще думаю, что вы заново изобретаете велосипед.

person Berry Langerak    schedule 18.05.2011
comment
Существует nanoweb.si.kz, и он превосходит Apache 2.0 на PHP4. Хотя это не полная замена производственных настроек, она может подойти для некоторых настроек приложения. - person mario; 18.05.2011
comment
Я могу назвать по крайней мере пять различных веб-серверов, которые превзойдут Apache 2.0. Это не значит, что это хорошая идея — строить все заново. - person Berry Langerak; 19.05.2011
comment
@BerryLangerak, ты абсолютно прав: php НЕ для этого - даже если ты можешь получить php-код, чтобы открыть сокет 4 и послушать его некоторое время - person tony gil; 06.02.2013

хотя я люблю php и java, я написал свои серверы сокетов на c++, работающие под лампой на облачном сервере amazon ec2. это очень, очень просто кодировать, отлаживать и безопасно, и вы можете практически просто копировать / вставлять примеры.

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

первое, что вы должны выяснить (выяснить), позволяет ли ваш сервер открывать пользовательские порты. amazon ec2 работает и на данный момент (13 февраля) можно использовать бесплатно в течение 12 месяцев.

Итак, это для вас, если вы спешите:

в этом наборе примеров есть все, что вам нужно, чтобы быстро приступить к работе.

person tony gil    schedule 06.02.2013

Судя по заголовку вопроса (остальное только делает его более запутанным), вы можете использовать существующий пакет, например http://pear.php.net/package/HTTP_Server для реализации веб-сервера на PHP. Он уже содержит весь код socket для приема клиентских подключений и прочего.

Итак, что мне нужно сделать, чтобы найти сервер с другого клиента

"Найти" - слишком широкая тема. Зависит от ваших реальных настроек. В локальной сети есть несколько протоколов для обнаружения. В противном случае вам следует просто полагаться на фиксированное имя машины и номер порта для вашего экземпляра сервера. Вы можете подключиться к нему, например. http://localhost:8007/ или что-то еще, что вы предопределили.

person mario    schedule 18.05.2011