<?php
/*
 * @Author: witersen
 * @Date: 2022-04-24 23:37:05
 * @LastEditors: witersen
 * @LastEditTime: 2022-04-27 11:33:46
 * @Description: QQ:1801168257
 */

/**
 * 与守护进程通信
 */
function FunShellExec($shell)
{
    //检测信息长度
    if (strlen($shell) >= SOCKET_READ_LENGTH) {
        FunMessageExit(200, 0, '数据长度超过' . SOCKET_READ_LENGTH . ' 请向上调整参数:SOCKET_READ_LENGTH');
    }
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("error:" . socket_strerror(socket_last_error()));
    $server = socket_connect($socket, IPC_ADDRESS, (int)IPC_PORT);
    socket_write($socket, $shell);
    $reply = socket_read($socket, (int)SOCKET_READ_LENGTH);
    socket_close($socket);
    return $reply;
}

/**
 * 守护进程状态探测
 * 0 超时
 * 1 打开
 * 2 关闭
 */
function FunDetectState()
{
    $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);


    @socket_connect($sock, IPC_ADDRESS, (int)IPC_PORT);

    socket_set_nonblock($sock);


    socket_set_block($sock);

    $v = array($sock);

    $state = @socket_select($r = $v, $w = $v, $f = $v, 5);

    socket_close($sock);

    return $state;
}