Сокеты PHP или Сокеты Python, Perl, Bash? - PullRequest
3 голосов
/ 26 июня 2009

Я пытаюсь реализовать сервер сокетов, который будет работать на большинстве хостингов PHP.

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

В настоящее время я написал Socket Server с PHP, который реализует кэш объектов: http://code.google.com/p/php-object-cache/

источник: http://code.google.com/p/php-object-cache/source/browse/trunk/socket.class.php

Однако PHP должен быть скомпилирован с поддержкой сокетов, и не многие серверы работают с поддержкой сокетов PHP.

Мой реальный вопрос: на каком языке я должен реализовывать сокет-сервер, иметь максимальную поддержку платформы и быть доступным из PHP.

Другими словами, какой язык сценариев наиболее распространен на серверах с поддержкой PHP?

Или мне нужно написать сервер сокетов на скомпилированном языке, чтобы он работал на всех серверах?

Позволяет на данный момент исключить IIS, только серверы Linux. Я не думаю, что многие сайты PHP работают на IIS ...


редактирование:

Извините, я думаю, что мой вопрос не ясен.

Я хотел бы знать, какие языки лучше всего подходят для создания сокет-сервера, учитывая следующие требования:

Язык должен существовать на виртуальном хостинге наряду с PHP, работающим в Apache (не CLI). Поддержка сокетов должна быть включена изначально, а не через обязательное расширение. PHP должен уметь записывать демоны в файл, а также запускать и останавливать демоны.

Я не прошу решения для одного сервера. Он должен работать на большинстве серверов общего хостинга.

Ответы [ 2 ]

7 голосов
/ 26 июня 2009

Любой сервер может быть остановлен или запущен PHP под Linux. Конечно, если вы используете сервер, который принимает сокеты из Интернета, то вы можете просто подключиться напрямую к серверу и сообщить ему о завершении работы. Не нужно идти через PHP!

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

Я сам фанат Perl. Не удивительно, что есть Доступна библиотека Perl Daemon .

Если ваш хостинг-провайдер предлагает поддержку сценариев Perl, то у вас, вероятно, есть разрешение на использование "system" или обратных ссылок command. Тогда вы вполне можете запустить демона. Однако вам нужно будет использовать непривилегированный порт (более 1024). Кроме того, вы должны спросить их в первую очередь! Они могут не ценить вас связывая порты на их сервере. Это определенно то, что вы должны обсудить с вашим хостинг-провайдером.

2 голосов
/ 20 октября 2009

Это действительно зависит от требований к установке.Часто самый простой и стандартный способ написания сокет-сервера - написать сервис inet.d .Это стандартный демон на моих Unix-машинах, и он будет обрабатывать процесс и обрабатывать детали уровня сокетов.Если вы хотите, чтобы ваша служба работала на порте ниже 1024 в Unix, это один из самых простых способов сделать это.Тем не менее, для начальной установки требуется root для настройки inet.d.

Если ваш общий хостинг позволяет PHP выполнять вызов exec, то вы можете запустить демон таким способом.Имейте в виду, что он должен работать над портом 1024. Затем вам нужно решить, будет ли ваша программа многопоточной или многопроцессорной.Обычно Java-программы являются многопоточными, в то время как экземпляр Apache обычно является многопроцессорным.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...