Как реализовать такую функцию в 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');