2013-02-15 15 views
13

Wie kann ich ein Tutorial wie folgt ohne die Befehlszeile folgen?Einrichten von Websockets ohne Befehlszeile

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

Ich muss in der Lage sein WebSockets zu verwenden, sondern einen gemeinsam genutzten Server und keinen Zugriff auf die Kommandozeile haben.

Ich kann nicht einfach das Skript von einem Browser ausgeführt werden, wenn das Skript ausgeführt würde aufhören, wenn ich den Browser geschlossen/vom Internet getrennt.

Antwort

13

Ihre Shared-Hosting-Provider Unter der Annahme, unterstützt crontab und Cronjobs (die meisten von ihnen tun), fügen Sie den folgenden Auftrag an den crontab:

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

Zusätzlich müssen Sie es jetzt starten, erstellen Sie so einfach die folgenden PHP-Datei und greifen Sie darauf in Ihrem Browser einmal zu:

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

Das sollte den Trick tun. Hoffentlich erlaubt Ihr Shared Hosting Provider execve() Anrufe getätigt werden. Viel Glück!

+0

wird dies im Wesentlichen halten das Skript immer offen/akzeptieren Verbindungen? Ich kann Cron-Jobs ausführen und dieses Skript ausführen, aber es sagt nicht wirklich "Crontab" irgendwo auf der Seite. Ich vermute, das ist nur impliziert, dass diese sind 'crontab obwohl und das sollte funktionieren? .. Ich kann Shell_exec Befehle ausführen. meinst du hoffentlich erlauben sie diesen Befehl? – maxhud

+0

Wenn Sie die _server.php_ Datei mit _nohup_ starten, bleibt das Skript immer geöffnet und akzeptiert Verbindungen.Im Grunde würde der PHP-Code 'shell_exec()', der früher gepostet wurde, Ihren Socket-Server starten. Der Cron-Job war einfach, um die Datei _server.php_ zu starten, wenn Ihr Shared-Hosting-Server neu gestartet wird. –

+0

Vielen Dank für Ihre Zeit und Lösung – maxhud

1

Nun versuchen Server.php auf Browser laufen. Die meiste Zeit funktioniert ein php-cli-script auch im Browser (bis einige Kommandozeilen-Funktionen wie argv/argc usw. verwendet werden). Auf der anderen Registerkarte des Browsers in einem anderen Browser können Sie übliche URL wie Screenshot in gegebenen Tutorial ausführen.

Eine wichtige Sache, überprüfen bitte Buchse und andere erforderliche Erweiterungen aktiviert ist oder nicht auf dem gemeinsam genutzten Server.

+0

wird dies im Wesentlichen starten mein PHP-Skript und es auf dem Server laufen? ... es klingt wie das ist, was passieren muss – maxhud

+0

Es wird Ihr Server-Skript starten und weiterlaufen, bis Browser Tab/Fenster geschlossen (aber nur für den Fall wenn die Server-Code-ID nicht von einer php-Nur-Cli- ni-Funktionalität abhängig ist. –

+0

Ich brauche eine Lösung, die mich nicht um einen Browser zu halten Seite offen ... – maxhud

0

ich nicht @reboot Richtlinie über CRON ist bis jetzt nur wusste, so @Octav O-Lösung wahrscheinlich viel besser ist. Aber während des Testens fand ich den folgenden Code (gefunden auf Saran's websocket tutorial) ziemlich nützlich.

speichern als websocket_launch.sh in dem gleichen Verzeichnis wie server.php ...

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 

... dann jede Minute dem Shell-Skript mit cron. Das Skript prüft, ob server.php läuft, und falls nicht, startet es.