2013-07-17 1 views
4

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

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

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

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

ответ

3

Не имея доступа к SSH на ваш общий хостинг, это довольно шелушащийся. Это сказало ...

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

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

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

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

В какой-то момент вы, вероятно, захотите остановить этот сервер. Вы можете использовать passthru и posix_kill с небольшим количеством магии Unix CLI, чтобы это сделать, может быть, в другом действии контроллера, который вы называете из 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); 
+0

не могли бы вы объяснить больше или предоставить ссылки, код для запуска сервера веб-сайтов в php на общем хостинге –

0

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

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

Смежные вопросы