TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
PHP nalozenie przerw na okresy. , ptoki 17/05/12 10:47 Jak najwygodniej programowo w php nalozyc na dane w postaci:
data_czas wartosc
filtr aby wyrzucać dane z określonego harmonogramu.
Chodzi o to ze monitoring tłucze sie cały czas a potrzebne są dane o dostepnosci i wydajnosci tylko z okresu kiedy aplikacja miala byc online.
Problem w tym ze zbudowanie paru (3-4) harmonogramow w postaci:
7-18 pn-pt
7-22 pn-so
24/7
jest niewystarczajace bo mośkom może być potrzeba np.:
7-18 pn-pt + 7-15 so.
Zna ktos jakąś zgrabną metodę?
data_czas mam w postaci timestampa albo np tak 2012 04 01 00:00
Gdybym mial jakas funkcje w rodzaju is_in_schedule(schedule, timestamp) zwracajaca true/false a schedule by sie podawalo po ludzku to bylby wypas.
Ale szperam i nie widze nic prostego ale elastycznego.- timestamp dobry , Deus ex machine 17/05/12 14:17
http://www.php.net/manual/en/function.date.php
date('Y-m-d', timestap) da Ci czytelna z timestampa
http://www.php.net/...al/en/function.strtotime.php
strtotime( data czytelna ) da Ci timestampa"Uti non Abuti" - Tyle to ja wiem :) bo juz teraz raporciochy hulaja ale pokazuja dane , ptoki 17/05/12 14:20
z calego okresu i w rezultacie tam jest i noc i weekendy. A ja chce wyciac te wolne okresy.
Teraz sie dowiedzialem ze nie moge se na bazie poagregowac i operowac danymi z calych godzin tylko albo bede musial zadawac zapytania podokresami albo kazdy jeden rezultat puszczac przez filtr czy sie miesci w schedule czy nie...
Do tego baza to nie baza tylko sql-opodobne API...
Rzeźba w ... ;)
- nie mam jak teraz sprawdzic, ale powinno zadzialac , Deus ex machine 17/05/12 20:09
i nie jest to jakos super optymalne .)
$harmonogram = array(
1 => array( // poniedzialek
'10-17',
'9-15',
),
3 => array( // sroda
'1-15',
),
5 => array(), // caly piatek
7 => array( // niedziela
'6-12',
),
);
function isInSchedule( $schedule, $timestamp )
{
$dayTS = date('N', $timestamp );
$hourTS = date('G', $timestamp );
$minTS = date('i', $timestamp );
if ( isset( $schedule[ $dayTS ] ) {
if ( empty( $schedule[ $dayTS ] ) ) {
return true;
}
foreach ( $valPeriod as $periodHours ) {
$range = explode('-', $periodHours);
if ( count( $range ) == 1 ) {
if ( $hourTS >= $range[0] ) {
return true;
} else {
return false;
}
}
if ( ( $minTS > 0 && $hourTS >= $range[0] && $hourTS < $range[1] )
|| ( $minTS == 0 && $hourTS >= $range[0] && $hourTS <= $range[1] ) // ten warunek zlapie tez kilka sekund po pelnej godzinie
) {
return true;
}
}
}
return false;
}"Uti non Abuti" - Dzieki za porade. Narazie mysle. bede klecil cos od poniedzialku. , ptoki 18/05/12 07:24
Zobacze jak wyjdzie. Serwer jest szybki wiec moze takie barbażyńskie raporty lyknie. ;)
- No to wychodzi na to ze zrobie tak - dosyc cwanie: , ptoki 23/05/12 22:01
W pierwszym kroku ludek wybiera date poczatkowa i koncowa i wybiera harmonogram z listy.
Tych harmonogramow bedzie pare w postaci 7-18 pn-pt, 7:30-16 pn-pt, 6-22 pn-nd i tak dalej.
W drugim kroku skrypt sprawdza jaki jest wybrany harmonogram i generuje taka liste:
Mon 2012 Apr 23 7:00 18:00
Tue 2012 Apr 24 7:00 18:00
Wed 2012 Apr 25 7:00 18:00
Thu 2012 Apr 26 7:00 18:00
Fri 2012 Apr 27 7:00 18:00
Mon 2012 Apr 30 7:00 18:00
Tue 2012 May 01 7:00 18:00
Wed 2012 May 02 7:00 18:00
Thu 2012 May 03 7:00 18:00
Fri 2012 May 04 7:00 18:00
Mon 2012 May 07 7:00 18:00
Tue 2012 May 08 7:00 18:00
Wed 2012 May 09 7:00 18:00
Thu 2012 May 10 7:00 18:00
Fri 2012 May 11 7:00 18:00
Mon 2012 May 14 7:00 18:00
Tue 2012 May 15 7:00 18:00
Wed 2012 May 16 7:00 18:00
Thu 2012 May 17 7:00 18:00
Fri 2012 May 18 7:00 18:00
Mon 2012 May 21 7:00 18:00
Tue 2012 May 22 7:00 18:00
Wed 2012 May 23 7:00 18:00
Thu 2012 May 24 7:00 18:00
To jest propozycja do zaakceptowania lub zmodyfikowania.
Jak sie komus nie podoba ze tam jest 1 i 3 maj to wywala jak sie mu umyslilo ze 23 maja mialo byc czynne do 23:00 to sobie modyfikuje.
Jak se umysli ze w jakas tam sobote mialo byc czynne to se dopisuje.
I klika w kolejny krok.
Tam juz skrypt bierze poszczegolne linijki i dla nich generuje zapytanie. potem to skleja w kupke i liczy syatystyke.
Zaleta jest taka ze jak sie pojawi przerwa w trakcie dnia to taka figura zalatwia "legalna dziure":
Wed 2012 May 23 7:00 13:00
Wed 2012 May 23 14:00 18:00
Tyle ze user musi nie byc debilem zeby bzdur nie dostal. |
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|