현재 위치: > 최신 기사 목록> Socket_accept () 서비스를 Linux 배경 데몬으로 등록하는 방법

Socket_accept () 서비스를 Linux 배경 데몬으로 등록하는 방법

M66 2025-05-28

Socket_accept () 는 PHP를 사용하여 네트워크를 프로그래밍 할 때 소켓 연결을 처리하는 일반적인 방법입니다. 그러나 자체는 자동으로 데몬으로 실행되지 않으며 Linux의 백그라운드 프로세스 형태로 안정적으로 구성되어야합니다. 이 기사는 Socket_accept () 가 포함 된 PHP 스크립트를 Linux 배경 데몬으로 등록하여 지속적으로 실행되고 자동으로 다시 시작되며 로그 관리 기능이 우수한 방법을 소개합니다.

1. PHP 소켓 서비스 스크립트를 준비하십시오

먼저 기본 소켓 서버 측 스크립트가 필요합니다. 다음은 TCP 서버의 간단한 PHP 예입니다.

 <?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); // 피하다CPU너무 높은 점유
        continue;
    }

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

socket_close($socket);

2. 데몬 스타터를 만듭니다

그것을 데몬 달리기로 바꾸려면 수동으로 "터미널에서 벗어나야"해야합니다. 일반적인 방법은 PHP를 사용하여 데몬 모드를 구현하거나 더 일반적으로 Linux를 사용 하는 SystemD입니다 .

SystemD를 사용하여 데몬을 등록하십시오

  1. PHP 스크립트 저장 <br> 스크립트가 /usr/local/bin/php_socket_server.php 라고 가정하면 파일이 실행 가능한지 확인하십시오.

 chmod +x /usr/local/bin/php_socket_server.php
  1. Systemd 서비스 장치 파일 <br>을 만듭니다 /etc/systemd/system/php-socket.service 에 다음 내용을 추가하십시오.

 [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. 서비스를 활성화하고 시작하십시오

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

이러한 방식으로, 시스템이 시작될 때 소켓 서비스가 자동으로 실행되며 비정상 출구가 제거되면 자동으로 다시 시작됩니다.

3. 데몬의 실행 상태를 확인하십시오

다음 명령을 사용하여 서비스 상태를 확인할 수 있습니다.

 sudo systemctl status php-socket.service

로그 정보보기 :

 journalctl -u php-socket.service -f

4. 좀비 프로세스와 자원이 유출되는 것을 방지합니다

장기적인 배경 소켓 서비스에서 합리적인 예외 처리는 매우 중요합니다. socket_accept 에 대한 적절한 지연을 허위로 반환하고 빈번한 오류를 위해 로그를 모니터링하는 것이 좋습니다.

5. 도메인 이름 청취 및 역전 프록시 활성화 (선택 사항)

M66.net 과 같은 도메인 이름을 통해 외부 세계에 서비스를 제공하려면 NGINX 또는 기타 리버스 프록시 소프트웨어와 함께 해당 서비스에 포트를 매핑 할 수 있습니다. 예를 들어: