Üdv mindenkinek!
Szeretnék megoldani egy problémát, de nem igazán megy egyszerűen.
Switch uptime-ot szeretnék kiírni, ami alap esetben így néz ki:
"Timeticks: (2514932212) 291 days, 1:55:22.12"
Gondoltam rá, hogy levágom az utolsó 20 karakter előtti részt, de ez nem lesz megfelelő, mert változik a karakterlánc hossza.
Ez lett volna az ominózus megoldás: $uptime = substr($uptime, -20, strpos($uptime, ') '));
Egyszerűbbnek gondoltam aztán a ')' előtti rész törlését, de valahogy úgy kellene kiírni az eredményt, hogy zárójel nélkül. Csak szóközre nem kereshetek, a karakterszám pedig szintén kiesik, mert a Timetick-ek növekedek.
Ez lett volna az a kódsor: $uptime = strstr($uptime, ') ');
Valakinek bármi jobb ötlet?
- 231 megtekintés
Hozzászólások
Bontsd fel szóközök alapján és utána azt kezeld tovább.
- A hozzászóláshoz be kell jelentkezni
Alapvetően 3 lehetséges utat látok:
- preg_match / preg_split
- state machine alapú string bejárás for ciklussal.
- explode
Ha fontos a feldolgozási idő akkor a három közül a leggyorsabbat kell választani.
- A hozzászóláshoz be kell jelentkezni
Ez lett a megoldás:
list($uptime) = explode(')', $uptime);
nem értem egyébként, hogy miért kell a "list", de így működik
Köszi!
- Indítsd újra a gépet! - Az egészet? - Nem, a felét...
- A hozzászóláshoz be kell jelentkezni
azert kell, mert az explode() tombot ad vissza, annak veszek az elso elemet a list()-tel.
- A hozzászóláshoz be kell jelentkezni
$uptime = substr($timestamp, strpos($timestamp,') ')+2);
- A hozzászóláshoz be kell jelentkezni
amugy fura, mert a timeticks alapjan egy tizedessel el lehet valami csuszva:
$ echo 2514932212/86400/1000 | bc -l
29.10801171296296296296
- A hozzászóláshoz be kell jelentkezni
nincs elcsuszva. mert 1/100 masodpercet szamol, nem 1/1000.
OP:
Miert nem matematikai muveletekkel szamolsz a timeticksbol?
/100 masodperc
/(100*60) perc
/(100*60*60) ora
es igy tovabb
- A hozzászóláshoz be kell jelentkezni
Gondoltam rá, viszont lesz több hasonló feladat és próbálom egységesen megoldani ha lehet.
- Indítsd újra a gépet! - Az egészet? - Nem, a felét...
- A hozzászóláshoz be kell jelentkezni
gyartotol fuggetlenul, az snmpkepes eszkozok az alap snmp mibeket szoktak implementalni. peldaul ilyen az SNMPv2-MIB, amiben van a sysuptime.
mivel senki sem szeretne feltalalni a ujra kereket, a tuzet.
tehat ha van masik snmp kepes eszkozod az is pont timetickset fog visszaadni sysuptime-re.
- A hozzászóláshoz be kell jelentkezni
honnan jon ez a furcsa string? switchekben van snmp, abban szokott lenni numerikus uptime
persze kaktusszal is lehet rejszolni, csak nem annyira elvezetes :)
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni