3 Stimmen

PHP-Sockets oder Python, Perl, Bash-Sockets?

Ich versuche, einen Socket-Server zu implementieren, der in den meisten gemeinsam genutzten PHP-Hosting-Systemen läuft.

Die Anforderungen sind, dass der Socket-Server automatisch von PHP installiert, gestartet und gestoppt werden kann, ohne dass der Benutzer etwas tun muss. Es spielt keine Rolle, in welcher Sprache der Socket-Server geschrieben ist, solange er auf den meisten Shared-Hosting-Systemen weltweit läuft.

Derzeit habe ich einen Socket-Server mit PHP geschrieben, der einen Objekt-Cache implementiert: http://code.google.com/p/php-object-cache/

Quelle: http://code.google.com/p/php-object-cache/source/browse/trunk/socket.class.php

Allerdings muss PHP mit Socket-Unterstützung kompiliert werden, und nicht viele Server laufen mit PHP-Sockets-Unterstützung.

Meine eigentliche Frage ist: In welcher Sprache sollte ich den Socket-Server implementieren, und haben maximale Plattform-Unterstützung und aus PHP aufrufbar sein.

Mit anderen Worten, welche Skriptsprache ist auf PHP-fähigen Servern am weitesten verbreitet?

Oder muss ich den Socket-Server in einer kompilierten Sprache schreiben, damit er auf allen Servern funktioniert?

Lassen wir IIS im Moment außen vor, nur Linux-Server. Ich glaube nicht, dass viele PHP-Sites auf IIS laufen...


bearbeiten:

Entschuldigung, ich glaube, meine Frage ist nicht klar.

Ich würde gerne wissen, welche Sprachen sich am besten für die Erstellung eines Socket-Servers eignen, wenn man die folgenden Anforderungen erfüllt:

Die Sprache muss im Shared Hosting neben PHP, das im Apache läuft, existieren (nicht CLI). Die Socket-Unterstützung muss nativ aktiviert sein, nicht über eine erforderliche Erweiterung. PHP muss in der Lage sein, den Deamon in eine Datei zu schreiben sowie den Deamon zu starten und zu stoppen.

Ich frage nicht nach einer Lösung für einen einzelnen Server. Es muss nativ auf den meisten Shared Hosting Servern laufen.

7voto

the.jxc Punkte 3237

Jeder Server kann von PHP unter Linux gestoppt oder gestartet werden. Wenn Sie einen Server betreiben, der Sockets aus dem Internet akzeptiert, können Sie sich natürlich auch direkt mit dem Server verbinden und ihm sagen, dass er herunterfahren soll. Der Umweg über PHP ist nicht nötig!

Was das "Starten eines Servers mit PHP" betrifft, so kann unter Linux so ziemlich alles von überall aus gestartet werden. Geben Sie einfach eine Shell ein, um den Prozess zu starten und ihn in den Daemon-Modus fallen zu lassen.

Ich bin selbst ein Perl-Fan. Es überrascht nicht, dass es eine Perl Daemon Bibliothek verfügbar .

Wenn Ihr Hosting-Provider Perl-Skript-Unterstützung anbietet, dann haben Sie wahrscheinlich die Erlaubnis, "system" oder Backticks zu verwenden command . Dann können Sie sehr wahrscheinlich einen Daemon starten. Allerdings müssen Sie einen nicht privilegierten Port (über 1024) verwenden. Außerdem sollten Sie SIE ZUERST fragen! Sie mögen es vielleicht nicht, wenn Sie Ports auf ihrem Server blockieren. Dies sollten Sie auf jeden Fall mit Ihrem Hosting-Provider besprechen.

2voto

brianegge Punkte 28043

Das hängt wirklich von den Anforderungen an die Installation ab. Oft ist der einfachste und standardmäßigste Weg, einen Socket-Server zu schreiben, ein inet.d-Dienst . Dies ist ein Standard-Daemon auf meinen Unix-Maschinen, der einen Prozess aufspaltet und die Details auf Socket-Ebene behandelt. Wenn Sie möchten, dass Ihr Dienst auf einem Port unter 1024 unter Unix läuft, ist dies einer der einfacheren Wege, dies zu erreichen. Bei der Erstinstallation muss Root jedoch die inet.d konfigurieren.

Wenn Ihr Shared Hosting PHP erlaubt, einen exec-Aufruf durchzuführen, können Sie den Daemon auf diese Weise starten. Denken Sie aber daran, dass er über Port 1024 laufen muss. Als Nächstes müssen Sie entscheiden, ob Ihr Programm mit mehreren Threads oder mehreren Prozessen arbeiten soll. Java-Programme sind in der Regel Multi-Thread-Programme, während eine Apache-Instanz in der Regel Multi-Process-Programme sind.

Schließlich verfügt der Host möglicherweise über eine Firewall. Dadurch wird verhindert, dass Shared-Hosting-Accounts Teil eines Bot-Netzes werden. Wenn die Firewall-Regeln keine Verbindungen zu anderen Ports zulassen, können Sie sich nicht aus der Ferne damit verbinden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X