|
|
|
<?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;
|
|
|
|
}
|