2013-02-15 16 views
13

コマンドラインを使用せずにこのようなチュートリアルに従うにはどうすればよいですか?コマンドラインなしでウェブソケットを設定する

http://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0/

私はWebSocketをを使用できるようにする必要がありますが、共有サーバーとコマンドラインへのアクセスなしを持っています。

ブラウザを閉じたときやスクリプトを実行しなくても、ブラウザからスクリプトを実行することはできません。

答えて

13

PHPファイルを開き、ブラウザに一度アクセスしてください:

<?php shell_exec('nohup php /path/to/server.php 2>&1 > /dev/null &');?> 

これはすべきことです。うまくいけば、あなたの共有ホスティングプロバイダは、execve()の呼び出しを可能にします。がんばろう!

+0

これは本質的にスクリプトを常に開いている/接続を受け入れますか?私はcronジョブを実行して、そのスクリプトを実行することができますが、実際にはページのどこにでも 'crontab'とは言いません。私はそれがちょうどそれらが 'crontab'だと私はshell_execコマンドを実行することができますか?うまくいけば彼らがそのコマンドを許可していることを意味しますか? – maxhud

+0

_nohup_を使用して_server.php_ファイルを起動すると、スクリプトは常に開いたままになり、接続を受け入れます。基本的に、以前に投稿された 'shell_exec()' PHPコードはあなたのソケットサーバーを起動します。共有ホストサーバーが再起動した場合、_server.php_ファイルを起動するために単にcronジョブを実行しました。 –

+0

あなたの時間と解決に感謝します – maxhud

1

ブラウザでServer.phpを実行してみます。ほとんどの場合、php-cliスクリプトもブラウザ上でうまく動作します(argv/argcなどのコマンドラインのみの機能を使用するまで)。他のブラウザの他のタブには、チュートリアルのスクリーンショットのような通常のURLを実行できます。

重要なことは、ソケットやその他の必要な拡張機能が有効かどうかを共有サーバーで確認してください。

@reboot nohup php /path/to/server.php 2>&1 >/dev/null & 

また、あなたはそう単純に以下を作成し、今それを起動する必要があります:crontabファイルに次のジョブを追加、(それらのほとんどがそう)あなたの共有ホスティングプロバイダがcrontabファイルとcronジョブをサポートしていますと仮定

+0

これは本質的に私のPHPスクリプトを起動し、それをサーバー上で実行し続けるのでしょうか...それは起こる必要があるように聞こえます – maxhud

+0

サーバースクリプトを起動し、ブラウザタブ/ウィンドウが閉じられるまで(ただし、サーバーコードIDがphp cli-onlyの機能に依存していない場合)。 –

+0

ブラウザのページを開いたままにしておく必要のないソリューションが必要です... – maxhud

0

私は今までCRONの@reboot指令について知らなかったので、@Octav Oの解決策がおそらくはるかに優れています。しかし、テスト中に、私は非常に便利な次のコード(Saran's websocket tutorialにある)が見つかりました。その後、server.phpと同じディレクトリにあるwebsocket_launch.sh ...

PID=`ps -aef | grep "server.php" | grep -v grep | awk '{print $2}'` 
if [ -z $PID ] 
then 
    #echo "Launching now" 
    nohup php server.php > error_log & 
else 
    #echo "Running as PID $PID" 
fi 

として

保存するには、この... CRONで毎分シェルスクリプトを実行します。スクリプトはserver.phpが実行されているかどうかを確認し、実行していない場合は起動します。

関連する問題