Aktueller Standort: Startseite> Neueste Artikel> So registrieren Sie den Service Socket_accept () als Linux -Hintergrund -Daemon

So registrieren Sie den Service Socket_accept () als Linux -Hintergrund -Daemon

M66 2025-05-28

Socket_accept () ist eine häufige Möglichkeit, Socket -Verbindungen bei der Programmierung von Netzwerken mit PHP zu verarbeiten. Es wird jedoch selbst nicht automatisch als Daemon ausgeführt und muss in Form von Hintergrundprozessen unter Linux als stabil konfiguriert werden. In diesem Artikel wird vorgestellt, wie ein PHP -Skript mit Socket_accept () als Linux -Hintergrund -Daemon registriert wird, um sicherzustellen, dass es kontinuierlich ausgeführt wird, automatisch neu gestartet wird und gute Log -Verwaltungsfunktionen verfügt.

1. Bereiten Sie Ihr PHP Socket Service Skript vor

Zunächst benötigen Sie ein grundlegendes Socket Server-Side-Skript. Hier ist ein einfaches PHP -Beispiel für den TCP -Server:

 <?php

$host = '0.0.0.0';
$port = 12345;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $host, $port);
socket_listen($socket);

echo "Server started on {$host}:{$port}\n";

while (true) {
    $client = @socket_accept($socket);
    if ($client === false) {
        usleep(100000); // vermeidenCPUZu hohe Belegung
        continue;
    }

    $message = "Hello from server at m66.net\n";
    socket_write($client, $message, strlen($message));
    socket_close($client);
}

socket_close($socket);

2. Erstellen Sie einen Daemon -Starter

Um es in einen Dämon zu verwandeln, müssen Sie manuell "aus dem Terminal herauskommen". Eine häufige Möglichkeit ist die Verwendung von PHP, um den Daemon -Modus oder häufiger systemd mit Linux zu implementieren.

Verwenden Sie systemd, um Daemonen zu registrieren

  1. Speichern Sie PHP -Skripte <br> Unter der Annahme, dass Ihr Skript /usr/local/bin/php_socket_server.php heißt, stellen Sie sicher, dass die Datei ausführbar ist:

 chmod +x /usr/local/bin/php_socket_server.php
  1. Erstellen systemd Service Unit -Datei <br> <br> Fügen Sie den folgenden Inhalt zu /etc/systemd/system/php-Socket.service hinzu:

 [Unit]
Description=PHP Socket Server
After=network.target

[Service]
ExecStart=/usr/bin/php /usr/local/bin/php_socket_server.php
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=php-socket-server
User=www-data
Group=www-data

[Install]
WantedBy=multi-user.target
  1. Aktivieren und beginnen Sie den Service

 sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable php-socket.service
sudo systemctl start php-socket.service

Auf diese Weise wird Ihr Socket -Dienst automatisch ausgeführt, wenn das System startet, und startet automatisch neu, wenn der abnormale Ausgang eliminiert wird.

3. Überprüfen Sie den laufenden Status des Daemons

Sie können den Dienststatus mit dem folgenden Befehl überprüfen:

 sudo systemctl status php-socket.service

Protokollinformationen anzeigen:

 journalctl -u php-socket.service -f

4.. Verhindern

In langjährigen Hintergrund-Sockel-Diensten ist eine angemessene Ausnahmeregelung sehr kritisch. Es wird empfohlen, entsprechende Verzögerungen für Socket_accept zu führen, um False zurückzugeben und das Protokoll auf häufige Fehler zu überwachen.

5. Aktivieren Sie das Hören von Domainnamen und umgekehrte Proxy (optional)

Wenn Sie über Domain -Namen wie M66.net Dienste für die Außenwelt bereitstellen möchten, können Sie den Port dem entsprechenden Dienst in Kombination mit NGINX oder einer anderen Reverse -Proxy -Software zuordnen. Zum Beispiel: