запуск сервера websockets в php на общем хостинге

У меня есть приложение чата, реализованное в PHP с помощью WebSockets ( http://code.google.com/p/phpwebsocket/ ), и на моем локальном хосте, когда я его тестирую, я должен запустить сервер WebSockets с помощью команды "php server.php" , который запускает сервер на локальном хосте, и файл продолжает работать до тех пор, пока я не нажму« Ctrl + c »на моем терминале Ubuntu. Я имею в виду, что он продолжает запускать цикл while, что вполне нормально bcoz, сервер должен быть в состоянии слушать запросы.

Теперь я сомневаюсь, что я разместил это приложение на общедоступном хостинге, который не дает мне SSH доступ, я имею в виду, что я не могу получить интерфейс, похожий на терминал, где я использовал свою команду, поэтому КАК я запустил этот скрипт server.php запустить мой сервер сейчас?

И да, одна вещь, о которой я упомянул, мне просто нужно запустить сценарий один раз, затем скрипт будет продолжать работать, а также хостинг-провайдер позволяет настраивать cron jobs .

Пожалуйста, помогите, спасибо заранее.

Не имея SSH-доступа к вашему общедоступному хостингу, это довольно flaky. Тем не менее …

Вы можете использовать exec для запуска чего-либо в командной строке из запускаемого сценария. Например, если у вас есть действие контроллера, которое вы вызываете из URL-адреса, например http://mysite.com/server/start , вы можете вставить строку:

 $lastLine = exec("php server.php"); 

Конечно, эта команда не вернется, пока команда не завершится, поэтому вы никогда не получите ответ от этого скрипта (если только он не сработает). Поэтому я бы использовал popen , который будет раскошеливать процесс и сразу же вернуться, позволяя вашему контроллеру вернуть ответ.

 $handle = popen("php server.php", "r"); 

В какой-то момент вам, вероятно, захочется остановить этот сервер. Вы можете использовать posix_kill и posix_kill с небольшим волшебством CLI Unix, чтобы это сделать, возможно, в другом действии контроллера, которое вы вызываете из URL-адреса, например http://mysite.com/server/stop , вы можете вставлять:

 $output = passthru('ps ax | grep server\.php'); $ar = preg_split('/ /', $output); if (in_array('/usr/bin/php', $ar)) { $pid = (int) $ar[0]; posix_kill($pid, SIGKILL); 

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

Вы должны сделать это на сервере, доступном на сервере. Я имею в виду, у вас должен быть VPS для вашего приложения, а общий хостинг вам не подходит.