Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP + Apache] Autoodświeżanie skryptu przez serwer
Forum PHP.pl > Forum > PHP
tikky
Witam,

Nie wiem czy ten wątek powinien być w dziale PHP czy Apache. Problem następujący:

Mam serwer pogody http://tky.homeftp.net/termometr/ który monitoruje temperaturę.
W tej chwili co 60 sekund strona jest odświeżana i sprawdzane jest czy temperatury nie przekroczyła stanu alarmowego, jesli tak to wysyła email z alarmem.
Nie jest to sposób idealny ponieważ cały czas musi byc uruchomiona strona w przeglądarce.

Czy da się jakoś zrobić aby serwer apache (działający pod windowsem - pakiet WAMP) sam automatcznie wywoływał jakiś skrypt php co dany okres czasu. Skrypt moze byc wykonywany w tle - nie interesuje mnie wyswietlanie na ekranie.

pozdrawiam

Tikky
Shili
Trzeba skorzystać na przykład z crona pod windows.
Instalację i konfigurację bez problemu znajdziesz w googlach winksmiley.jpg
Babcia@Stefa
To znaczy chodzi Ci o kod PHP który będzie wywoływać Siebie co 60 sekund?

  1. <?php
  2. $time = file_get_contents('last_update.txt');
  3. $exp = explode('|', $time);
  4. if($exp[1] < mktime() OR $exp[1] == mktime())
  5. {
  6. // tutaj sprawdzanie temperatury, alarmowanie itp...
  7. /*
  8. $sms = new SMSClass();
  9. $sms -> Send(...);
  10. */
  11. // koniec sprawdzania temperatury i alarmowania
  12. // czas na spanie - krótko będziemy spać...
  13. sleep(60);
  14.  
  15. $fp = fsockopen("tky.homeftp.net", 80, $errno, $errstr, 30);
  16. if (!$fp) {
  17. echo "$errstr ($errno)<br />\n";
  18. } else {
  19. $out = "GET /termometr/check_temperature.php HTTP/1.1r\n";
  20. $out .= "Host: www.example.comr\n";
  21. $out .= "Connection: Closer\nr\n";
  22.  
  23. fwrite($fp, $out);
  24. while (!feof($fp)) {
  25. echo fgets($fp, 128);
  26. }
  27. fclose($fp);
  28.  
  29. $file = fopen('last_update.txt', 'w');
  30. fwrite($file, mktime(). '|' .mktime()+60);
  31. flose($file);
  32. }
  33. }
  34. ?>


Nie wiem czy to będzie działać, ale powinno smile.gif

Dziękuję, Babcia@Stefa
tikky
Babcia@Stefa:
Kod który sam siebie wywołuje już mam tutaj:
http://tky.homeftp.net/termometr/index.php

a zrobiłem to po prostu przez umieszczenie w pierwszej linijce:
  1. <?php header('Refresh: 60'); ?>


(aby nie strona szybciej się ładowała testuję teraz wersję na ajax'ie:
http://tky.homeftp.net/termometr/index.php
ale mam problem z cachownaiem danych przez IE. Pod firefoxem i operą śmiga ładnie smile.gif

Chodzi mi o to, aby nie było potrzeby zostawiać włączonej przeglądarki na serwerze a żeby kod php był wywoływany w tle przez apacha.
Babcia@Stefa
Chciałeś kod który będzie wykonywał się sam w tle... dałem Ci taki, to nie to co myślisz, mój kod wykonuje się sam w tle w nieskończoność (dopóki nie wyłączysz serwera Apache)

Twój kod działa tylko kiedy przeglądarka jest załączona... w tym chyba problem?

@edit
Jeśli te czujniki mają zapobiec pożarowi, szansa jest 1 na tysiąc że zostaniesz poinformowany, ponieważ na stronie może nikogo nie być kiedy wystąpi wysoka temperatura, a wtedy skrypt się nie wykona!

Dziękuję, Babcia@Stefa
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.