Как реализовать такую ​​функцию в PHP? - PullRequest
1 голос
/ 27 января 2010

Он должен проверить, открыт ли определенный порт на локальном хосте, если нет, перезагрузиться.

Он запускается в Windows.

Ответы [ 3 ]

1 голос
/ 27 января 2010

Это должно сделать это, протестировано на Windows 7 и работает. Должен работать на всех вкусах NT:

function testPort($port, $timeout = 5) {
    if(!fsockopen('127.0.0.1', $port, $errno, $errstr, $timeout)) {
        exec("shutdown.exe /r");
    }
}

testPort(8080);
0 голосов
/ 27 января 2010

Используйте розетки вам нужно открыть TCP-соединение (сокет) к локальному узлу с этим конкретным портом. Если соединение установлено, это означает, что порт открыт, в противном случае (если тайм-аут или отклонен), то порт закрыт.

это только для портов TCP

вот пример кода

Для части 'reboot' используйте exec('shutdown -r');

0 голосов
/ 27 января 2010

Вы можете написать расширение PHP для этого. Расширение должно использовать Windows API для перезагрузки компьютера, потому что часть проверки сокетов может быть выполнена прямо в PHP. Здесь - вопрос о том, как писать расширения.

InitiateSystemShutdown - это функция Win32 API, которую можно вызвать для фактической перезагрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...