Сокет серверный скрипт

Рейтинг: 0Ответов: 1Опубликовано: 03.07.2011

Вопрос возник, не знаю как правильно объяснить... Короче, надумал сделать простой онлайн-сервис, к которому будут подключаться с телефона через сокет. Так вот, как организовать скрипт, который не будет разрывать соединение, а будет общаться с клиентом?

Ответы

▲ 2

Смотрите в сторону функций socket_listen, socket_accept. Спокойно работает на php под управлением апача, к слову. Только не на 80 порт сервер ваш вешайте.

В общем случае дело выглядит так:

set_time_limit(0);
ini_set('max_execution_time', 0);
error_reporting(0);
$clients = array();
$server = /* создание сокета: create, bind, listen */;
$exit = false;
while (true) {
  if ($exit) break; // при какой-то команде полезно этот флажок менять, иначе довольно трудно вырубить. полезно еще делать if is_file('close.txt') break; для "аварийного" выключения
  if ($client = @socket_accept($server)) {
    /*
       новый клиент.
       читаем входные данные, 
       шлем ответ, 
       добавляем при надобности клиента в список
    */
    }
  foreach ($clients as $client) {
    /* читаем команду, отвечаем */
    }
  sleep(1); // дабы не перегружать сервер
  }
foreach ($clients as $client) 
  @socket_close($client);
@socket_close($server);