Aktueller Standort: Startseite> Neueste Artikel> Wie führe ich den Funktionsdienst von Socket_accecece () in PHP in Systemd für die Verwaltung aus, um eine bessere Prozesssteuerung und einen automatischen Neustart zu erzielen?

Wie führe ich den Funktionsdienst von Socket_accecece () in PHP in Systemd für die Verwaltung aus, um eine bessere Prozesssteuerung und einen automatischen Neustart zu erzielen?

M66 2025-07-04

Zunächst benötigen wir ein einfaches PHP -Socket -Service -Skript, das einem bestimmten Port zuhört, Verbindungen akzeptiert und einfach antwortet.

 <?php
// erstellen TCP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die("socket_create() scheitern: " . socket_strerror(socket_last_error()) . "\n");
}

// Adresse und Port binden
$address = "0.0.0.0";
$port = 12345;
if (socket_bind($socket, $address, $port) === false) {
    die("socket_bind() scheitern: " . socket_strerror(socket_last_error($socket)) . "\n");
}

// Hören Sie sich die Verbindung an
if (socket_listen($socket, 5) === false) {
    die("socket_listen() scheitern: " . socket_strerror(socket_last_error($socket)) . "\n");
}

echo "Service begann,Hören Sie sich Port an $port\n";

// Erhalten Sie Client -Verbindungen in einer Schleife
while (true) {
    $clientSocket = socket_accept($socket);
    if ($clientSocket === false) {
        echo "socket_accept() scheitern: " . socket_strerror(socket_last_error($socket)) . "\n";
        continue;
    }

    $message = "Willkommen bei Connect m66.net PHP Socket Aufschlag!\n";
    socket_write($clientSocket, $message, strlen($message));

    socket_close($clientSocket);
}

socket_close($socket);
?>

Dieses Skript hört auf den 12345 -Port des Geräts, akzeptiert die Client -Verbindung, sendet eine willkommene Nachricht und schließt dann die Verbindung.

2. Erstellen Sie die Datei systemd Service Unit -Datei

Unter der Annahme, dass das obige PHP-Skript als /USR/local/bin/php-socket-server.php gespeichert wird, müssen wir eine Systemd-Dienstdatei schreiben, um sie zu verwalten.

  1. Erstellen Sie mit dem Inhalt wie folgt eine neue Servicedatei /etc/systemd/System/Php-Socket-Server.service :

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

[Service]
Type=simple
ExecStart=/usr/bin/php /usr/local/bin/php-socket-server.php
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=php-socket-server

[Install]
WantedBy=multi-user.target

veranschaulichen:

  • ExecStart gibt den Startbefehl an, um das Skript mit dem PHP -Interpreter des Systems auszuführen.

  • Neustart = stellt immer sicher, dass der Dienst nach dem Absturz automatisch neu gestartet wird.

  • Neustartsec = 5 bezieht sich auf das 5 -Sekunden -Intervall des Neustarts.

  • StandardOutput als auch StandardError werden für eine einfache Fehlerbehebung an das Systemprotokoll (Syslog) ausgegeben.

  • Syslogidentifier legt die Protokollkennung fest.

3. Aktivieren und starten Sie den Service

Führen Sie den folgenden Befehl aus, um den Dienst in Kraft zu setzen und zu starten:

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

Service Status überprüfen:

 sudo systemctl status php-socket-server.service

Wenn der Dienst normal ausgeführt wird, können Sie Telnet oder NetCat verwenden, um eine Verbindung zum Test herzustellen:

 telnet 127.0.0.1 12345

Willkommensnachricht sollte gesehen werden:

 Willkommen bei Connect m66.net PHP Socket Aufschlag!

4. Optimierungsvorschläge

  • Protokollverwaltung : Es wird empfohlen, die Protokollierungsfunktion in PHP-Skripten hinzuzufügen oder mit RSYSLOG die Kennung von PHP-Socket-Server zu filtern, um die Anzeige von Protokollen zu erleichtern.

  • Sicherheit : Festlegen von Firewall -Regeln entsprechend den tatsächlichen Bedürfnissen, und nur vertrauenswürdige IPs dürfen auf diesen Port zugreifen.

  • Serviceberechtigungen : Sie können die Benutzer- und Gruppenfelder in der Systemd -Dienstdatei konfigurieren, um das Ausführen als Stammverkehr zu vermeiden und die Sicherheit zu verbessern.

  • Code -Robustheit : Signalverarbeitung (z. B. pcntl_signal ) zu Service -Skripten hinzufügen, um ein elegantes Herunterfahren zu erreichen.