Ticket #9702: sleep2.php

File sleep2.php, 1.9 KB (added by sebasth@…, 14 years ago)

This is my tiny php script just start it with a php command client.

Line 
1<?php
2
3/**
4* This is a simple script to shutdown a frontend when it is ideling in the mainmenu
5* I wrote this because i want to shutdown my frontent when the timer i can set in mythtv was reached and returned to the main menu
6*/
7
8$host = "192.168.0.25";
9$port = 6546;
10$socketTimeOut = 30;
11$idleMenuSecs = 300;
12$shutDownProgramm = "sudo /sbin/halt";
13
14// try to open the socket
15$fp = false;
16while($fp == false) {
17 $fp=@fsockopen($host,$port, $errno, $errstr, $socketTimeOut);
18 sleep(5);
19}
20
21// read the menu :)
22readTerminal(&$fp,$bla='');
23
24echo "Connected to the server: ".$host.":".$port."\n";
25
26// start the loop here :)
27readMenuStatus(&$fp,&$idleMenuSecs);
28
29// loop exit ? well call the shutdown command :)
30$ls = system($shutDownProgramm);
31die();
32
33
34/**
35* This looks at the status of the menu
36*/
37function readMenuStatus(&$fp,&$idleMenuSecs,&$inMainMenu = false) {
38
39  echo "Sending command: query location\n";
40
41  $status = '';
42  sendCommand(&$fp,'query location',&$status);
43  echo "Current Menu is: ".$status."\n";
44
45  // we are in the mainmenu
46  if(strpos($status,"mainmenu") !== false) {
47    if($inMainMenu == false) {
48      // first time in mainmenu
49      echo "In mainmenu, next time i will shutdown the system\n";
50      $inMainMenu = true;
51    } else {
52      // still in mainmenu ? call shutdown
53      echo "Shutting down system !\n";
54      fclose($fp);
55      return;
56    }
57  } else {
58   $inMainMenu = false;
59  }
60
61  sleep($idleMenuSecs);
62
63  readMenuStatus(&$fp,&$idleMenuSecs,&$inMainMenu);
64}
65
66
67/**
68* reads data from the terminal
69*/
70function readTerminal(&$fp,&$r) {
71
72  $r='';
73  do {
74    $r.=fread($fp,1000);
75    $s=socket_get_status($fp);
76  } while ($s['unread_bytes']);
77}
78
79/**
80* sends command to the terminal
81*/
82function sendCommand(&$fp,$c,&$r) {
83  if ($fp) {
84    fputs($fp,"$c\r");
85    fputs($fp,"\n");
86    sleep(1);
87    readTerminal(&$fp,&$r);
88    $r=preg_replace("/^.*?\n(.*)\n[^\n]*$/","$1",$r);
89  }
90  return $fp?1:0;
91}
92
93?>