Sziasztok!
Adott egy szerver, ahol nem pontos az óra. Az eltérés 20+ perc, az admin sajna nem érdeklődő az ntp irányában :-) Egy kész kódban az időt hogyan tudnám a valóshoz közelíteni? Van mód php-val más szerverek óráját figyelni?
Thx
dzsolt
- 1865 megtekintés
Hozzászólások
Ezt próbáltad?
setlocale(LC_TIME, 'hu_HU.UTF8');
Szerk.: Most olvasom, hogy 20 perc az eltérés, ezesetben természetesen a kód nem fog működni. Miért nem lehet egyszerűen beállítani az órát pontosra?
- A hozzászóláshoz be kell jelentkezni
No ez az amit nem tudok :-( Többszöri megkeresés ellenére sem az idő, sem pedig a fájl tulajdonos módosítása nem történt meg. Pedig a .ssh könyvtárban ott a kulcsom. A felhasználónév váltás óta újra be kell írnom a jelszót megint. A szervert nem én bérlem, gyakorlatilag csak backup jellegű feladataim vannak, illetve kisebb foltozások. Pedig scriptet is írtam az adminnak, hogy gondolkodni se kelljen a rekurzív fájl tulajdonos módosítással :-) A pontos időre javasolni fogom neki a Kossuth rádió sűrűbb hallgatását :-D
- A hozzászóláshoz be kell jelentkezni
Én úgy csinálnám, hogy létrehoznék egy filet, amibe beleírnám, hogy mekkora az eltérés. Aztán amikor időt kell lekérned, akkor csak simán hozzáadod az aktuális időhöz a file tartalmát. (Természetesen mindegyik idő unix timestamp lenne.)
A file létrehozása meg megoldható lenne pl. ezzel a scripttel. Kicsit át kellene alakítani, hogy ne átállítsa az időt (gondolom erre nincs jogod a szerveren), hanem létrehozza ezt a filet. És ha van jogod cronjob futtatására, ezt a scriptet le lehetne futtatni időnként, pl. naponta.
Tehát a gyakorlatban a fileban kb. 1200 lenne (ha a szerver késik, ha siet, akkor -1200). És ezt szépen beolvasnád egy változóba amikor fut a php scripted, és sima dátum kiíráskor akkor ez lenne a kód: date("Y.m.d H:i:s",time()+$adjust);
- A hozzászóláshoz be kell jelentkezni
Kicsit megpatchelnem a kododat:
function mytime()
{
return time()+IDO_ELTERES_KONSTANS;
}
A const-ot persze valahol beallitod, es ezt beteszed egy file-ba, amit include-olsz.
Az elonye annyi, hogy ezutan (esszel!!) a "time()" stringet "mytime()"-ra cserelve javithatod a teljes kodot..
Valoszinuleg az ora maga pontosan jar (szoval 1 nap alatt 24 oranyit no), csak az offset a hibas. Szoval eleg lenne egyszer beallitani azt a konstans szamot..
Ha MySQL-t (vagy egyeb DB-t) is hasznalsz, akkor kerdes, hogy az ugyanazon a gepen van-e, vagy masikra tettek fel. Onnan is lekerheted az idot, es ha PHP es MySQL idokeres is van a kododban, inkonzisztens lesz. De ha kulon gepen van, es meg az ora is helyesen jar, akkor nyert ugyed van :).
Ha tudsz olyan kozeli webservert, aminek helyesen jar az oraja, akkor egy HEAD keressel (mondjuk libcurl-al) lekerheted az orajat. Bar ha gyakran lenne erre szukseged, akkor nem ajanlom ezt a modot (mar a terheles es a kesleltetes miatt sem). Ugyanez megoldhato kozeli DB-vel is.
--
"ne támogasd az erdők kiírtását mozijeggyel, töltsd le a netről!" - killllll, asva.info
- A hozzászóláshoz be kell jelentkezni
Nagyon jó, van miből elindulnom! Szeretek kisérletezni, de én csak egy egyszerű hobby programozó vagyok :-) A legjobb megoldás, ha az irányt megkapom, mert a megoldás kidolgozása után többé már nem felejtem el az utat :-)
A mysql szerver localhoston van, de a dns-ben külön néven elérhető. Most átfutom a kódot, hogy hány helyen történik idő lekérdezés, bár emlékeim szerint a funkciós fájlon kívül nem. Ebben van benne minden amit használ az oldal, kivéve az én kisérleteimet :-) Azt azért külön fájlba tettem :-)
- A hozzászóláshoz be kell jelentkezni
Akár egy normális ntp szerverről is lekérdezhető - feltéve, ha minden engedélyezett (tűzfalon port, hozzáférés stb.), majd például a különbséget a szerveren találhatóhoz képest egy konstansban elhelyezed. Lusta voltam megírni, de pl. első google találatok között egy socketes régi kód.
- A hozzászóláshoz be kell jelentkezni
"Az eltérés 20+ perc, az admin sajna nem érdeklődő az ntp irányában :-) "
Szerintem rúgd tökön az admint. Mi az, hogy a szerver órája 20+ percet eltér és tudatosan leszarják?
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni
En addig menekulnek innet, amig lehet. Az az admin lehet, hogy a backup irant se erdeklodik nagyon. Annyi sok mas szep, aranyos webhosting van, senki nem kotelez teged arra, hogy itt hostold. Verd az asztalt, vagy ha nem, akkor kerd vissza a penzed.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Teljesen jogos a meglátás! De!
Nem én fizetem, engem csak megkértek a csekély általános ismereteim miatt egy kis segítségre. Backup scriptet írtam, crontabot szerkesztettem, igaz a mai napig nem működik a cron és egy .sh scriptben ott vannak amik jogok híjján nem elérhetőek, tehát ami tőlem telhető mindent megtettem. Az oldal tulaja pedig verheti az asztalt, hogy ott vannak a könyvtárban a fájlok, nekünk ez kellene :-) Ha adatvesztés lenne, akkor az itthoni gépemen 48 óránál nem régebbi mentések vannak az sql és a web részről is, amit kézzel készítek amikor időm engedi. A tömörítvényeket pedig szépen lementem minden alkalommal és az utolsó 3 példány megvan mindenkor. Az oldal tulaja is letölti olykor a mentést. Számomra csupán érdekesség az egész, anyagilag nem érint, sőt igazán az egzisztenciám sem sérül hiba esetén csak esetleg a belefektetett energiám úszik el.
- A hozzászóláshoz be kell jelentkezni
Nem tudtam, hogy nem a tied. Viszont joszandekbol lehet szolni az oldal tulajanak, hogy szivatnak oregem, STOP.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni