Cronometru Background
Moderatori: Zamolxe, Moderatori
Cronometru Background
Din mySQL pot citi ce temperatura am in camera. As dori sa stiu daca se poate face in PHP un script care sa lucreze in background, sa verifice daca s-a schimbat valoarea temperaturi pentru a opri sau a porni centrala.
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Re: Cronometru Background
Fa un cron sa ruleze la 5 minute sau la cat vrei tu "php check_temp.php" (cel mai simplu) sau http://stackoverflow.com/questions/2036 ... on-process .
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/
Re: Cronometru Background
Poti face asa:
Este o bucla infinita care va verifica mereu temperatura curenta si ia decizia de pornire/oprire, insa trebuie sa ai in vedere ca e foarte probabil ca senzorul tau care este interogat de "citeste_temperatura()" sa nu returneze foarte consistent si nici centrala sa nu porneasca sau sa se opreasca foarte prompt. Ideal este sa mai pui cate un sleep din loc in loc.
Cod: Selectaţi tot
$temp_buna= 23; // Aici pui tu de la ce temperatura vrei sa pornesti
while ( true )
{
$temp_curenta = citeste_temperatura();
$temp_delta = $temp_buna - $temp_curenta;
if ( $temp_curenta != $temp_veche && $temp_delta < 0 )
opreste_centrala();
if ( $temp_curenta != $temp_veche && $temp_delta > 0 )
porneste_centrala();
}
Este o bucla infinita care va verifica mereu temperatura curenta si ia decizia de pornire/oprire, insa trebuie sa ai in vedere ca e foarte probabil ca senzorul tau care este interogat de "citeste_temperatura()" sa nu returneze foarte consistent si nici centrala sa nu porneasca sau sa se opreasca foarte prompt. Ideal este sa mai pui cate un sleep din loc in loc.
- vectorialpx
- Senior Member
- Mesaje: 4832
- Membru din: Mar Mar 01, 2005 9:48 am
- Localitate: Bucuresti
- Contact:
Re: Cronometru Background
ViezuREX scrie:Poti face asa:Cod: Selectaţi tot
$temp_buna= 23; // Aici pui tu de la ce temperatura vrei sa pornesti
while ( true ) { ...
Nope, don't do that!
Nu exista bucla infinita in programare.
Edit: Nu recomand buclele infinite, never.
Faci o bucla "infinita" cu scopul ca la un moment dat sa o opresti.
Poti incerca acest cod pe un PC doar daca n-ai motiv sa dai restart la Apache
Un cron este OK daca ai UNIX.
Daca ai Windows, poti folosi un "Task scheduler".
Re: Cronometru Background
Nu cred ca are sens o discutie legata de semantica, conceptul de bucla infinita se refera la o bucla conditionala in care conditia este mereu indeplinita.
In alta ordine de idei ... CRON sau Task Scheduler iti ofera granularitate minima de 1 minut.
In alta ordine de idei ... CRON sau Task Scheduler iti ofera granularitate minima de 1 minut.
- vectorialpx
- Senior Member
- Mesaje: 4832
- Membru din: Mar Mar 01, 2005 9:48 am
- Localitate: Bucuresti
- Contact:
Re: Cronometru Background
ViezuREX scrie:Nu cred ca are sens o discutie legata de semantica, conceptul de bucla infinita se refera la o bucla conditionala in care conditia este mereu indeplinita.
Stiu ce este o bucla infinita si, da, ai dreptate referitor la definitie
Ca sa opresti acea bucla va trebui sa opresti procesul. Un cron iti va oferi posibilitatea sa modifici scriptul cand doresti, sa modifici variabile etc.
E ceva mult mai practic, mai ales in cazul de fata. Parerea mea este ca buclele infinite sunt periculoase si sunt ceva de evitat. E doar parerea mea.
ViezuREX scrie:In alta ordine de idei ... CRON sau Task Scheduler iti ofera granularitate minima de 1 minut.
Nu vad de ce ti-ar trebui sa faci asta la secunda.
Verifica temperatura din casa, nu e laborator de chimie
Re: Cronometru Background
@vectorialpx
1. Din orice bucla poti iesi programatic folosind BREAK din cate stiu eu, nu trebuie sa opresti neaparat procesul.
2. Referitor la granularitate ... am zis sa ofer o solutie care ofera mai multe optiuni.
1. Din orice bucla poti iesi programatic folosind BREAK din cate stiu eu, nu trebuie sa opresti neaparat procesul.
2. Referitor la granularitate ... am zis sa ofer o solutie care ofera mai multe optiuni.
- vectorialpx
- Senior Member
- Mesaje: 4832
- Membru din: Mar Mar 01, 2005 9:48 am
- Localitate: Bucuresti
- Contact:
Re: Cronometru Background
Ok. Ai scriptul timer.php
rulezi
localhost/timer.php
Cum opresti acest script?
Cod: Selectaţi tot
<?php
while(1) { echo 3; sleep(2); }
rulezi
localhost/timer.php
Cum opresti acest script?
Re: Cronometru Background
Adaug o variabila de control
Deci ies din bucla dupa 20 secunde.
Am inteles problema la care te referi dar este rezolvabila. Nu spun ca e cea mai curata/eficienta/eleganta solutie, dar merge.
Cod: Selectaţi tot
<?php
while(1) { echo 3; sleep(2); $control++; if ( $control > 10 ) break; }
Deci ies din bucla dupa 20 secunde.
Am inteles problema la care te referi dar este rezolvabila. Nu spun ca e cea mai curata/eficienta/eleganta solutie, dar merge.
- vectorialpx
- Senior Member
- Mesaje: 4832
- Membru din: Mar Mar 01, 2005 9:48 am
- Localitate: Bucuresti
- Contact:
Re: Cronometru Background
ViezuREX scrie:Adaug o variabila de control
Deci ies din bucla dupa 20 secunde.
Nu spun ca e cea mai curata/eficienta/eleganta solutie, dar merge.
Nu, nu mai ai un proces continuu.
Mai bine verifici aerul conditionat manual
Daca rulezi din consola poti da un CTRL+C ca sa inchei procesul.
Apoi, daca modifici ceva, repornesti procesul.
However, este mai OK cu cron
sau @gcosmin faci un mic soft in (C, Java, NodeJs) care are un mic timer.
Asta ar fi varianta eleganta.
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 37 vizitatori