Как реализовать такую ​​функцию в PHP?

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

Это работает в окнах.

3 ответа

Решение

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

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

testPort(8080);

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

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

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

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

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

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

Другие вопросы по тегам