WAKE ON LAN - PHP
Aus VDR Wiki
Wakeup per PHP
Eine eigene Internet-Service Anwendung für WAKE ON LAN per PHP-Skript ist keine größere Schwierigkeit. Um einen Rechner aus einer PHP Anwendung heraus direkt zu starten, kann auch die unten stehende Funktion verwendet werden.
/**
* Verschickt ein WakeOnLan Paket an eine gegebene IP oder Broadcast Adresse
* Die Mac Adresse muss im Format xx:xx:..:xx angegeben werden
*
* @param string $mac Hardware Adresse des Servers
* @param string $addr IP oder Broadcast an die das Paket soll
* @param integer $port Portadresse
* @return boolean
*/
function WakeOnLan($mac, $addr, $port) {
$addr_byte = explode(':', $mac);
$hw_addr = '';
for ($a=0; $a < 6; $a++) $hw_addr .= chr(hexdec($addr_byte[$a]));
$msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
for ($a = 1; $a <= 16; $a++) $msg .= $hw_addr;
$s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if ($s == false) {
echo "Error creating socket!\n";
echo "Error code is '".socket_last_error($s)."' - " . socket_strerror(socket_last_error($s));
return false;
} else {
$opt_ret = socket_set_option($s, 1, 6, TRUE);
if($opt_ret < 0) {
echo "setsockopt() failed, error: " . strerror($opt_ret) . "\n";
return false;
}
$e = socket_sendto($s, $msg, strlen($msg), 0, $addr, $port);
socket_close($s);
return true;
}
}