Diskuze: Machr na PHP - Skript pro počítání návštěv
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Vlastník

Zobrazeno 40 zpráv z 40.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
to na mém webu mám, nicméně nastal čas to vylepšit.
Jak0koliv technoologie? Google Analytics...
to zřejmě ale nebude řešení machra.
předpokládám že taky není řešení pro nás (borce).
Je mozne, pokud se musi upravit php.ini, nahradit ho nejakym skriptem treti strany?
David Hartinger musí tam být grafika ?
"Je už na vás, jestli jen vypíšete dny a počet návštěv nebo si troufnete třeba na graf."
Zapojuji se do soutěže
http://projekty.danvitek.cz/…dlo-navstev/
když děláš výpisy, zkus používat konce řádků a tabulátory, i vygenerovaný HTML může vypadat pěkně.
Když se použije vhodný editor, tak to zpravidla odsazuje samo.
Velmi hezké HTML mi leze z PHP třídy XMLwriter.
Ahoj, tak zde posílám své řešení. Skript má 2 části, první je
primitivní PHP, které do databáze vloží záznam. Druhá část už je
psaná v javě, jednou sem se prostě musel naučit v javě pracovat s MySQL.
Vzhledem k tomu že nemám moc časo, protože nejsem doma, tak jsem to ani
nestihl moc dostat. Aplikace není ani trochu OOP a dokumentace je otřesná,
ale umí zanalyzovat i jaký uživatel má prohlížeč a OS.
http://uloz.to/…-navstev-zip
ještě dodám že potřeujete databázi navstevy s tabulkou navstevnici se
sloupcii
ip
datetime
agent
page
page zatím není implementováno.
Přidávám svou verzi. Jede to v PHP a za pomoci AJAXU, zde si to můžete
vyzkoušet: http://www.mvc.mzf.cz/…database.php
Zde je link ke zdrojákům.
https://drive.google.com/folderview?…
Věci jako stejný uživatel řeším přes databázi(unikátní index). Aplikace také umí vybrat nejvícekrát použitý browser(znovu řešeno přes SQL)
Ták, končíme
Vidím, že jsem minimálně jednoho soutěžícího potěšil
Zaznamenal jsem jen 3 lidi, tak se alespoň mohu pořádně rozpovídat
DanVitek
Ten kód dává smysl, nicméně trpí vážnými nedostatky. Již jsem ti ty
samé vytýkal minule. Třídy se píší do samostatných souborů. Soubor
tridy.php není dobrý nápad. Předpokládám, že to píšeš v nějakém
PSPadu, protože kód není vůbec odsazený, je špatně čitelný a v celé
té nudli je jen jeden komentář. Přístup, který si zvolil, by na nějakém
menším webu asi postačoval, ale volat ty 2 SELECTYy a INSERT při každém
zobrazení webu by od určité (ne moc vysoké) návštěvnosti nebylo reálné.
Stále používáš zastaralý MySQL ovladač a stále nesprávně ošetřuješ
proměnné, které do dotazů vkládáš.
Misaz
Zápis řešíš jedním INSERTem do tabulky, to by u průměrného webu
rychlostně určitě stačilo, u větších by se to muselo logovat do souborů
a zapisovat potom do DB dávkově. Sice je soutěž pro PHP, ale je tu zvykem
psát aplikace v tom, co je zrovna po ruce, takže jsem se pustil do té tvé
JAVA aplikace. Problém bude ale v tom, že většina webhostingů neposkytuje
vzdálený přístup k MySQL databázi, takže v praxi by tento způsob nešel
použít. Jedině, že bys aplikaci spustil přímo na serveru, kde běží ta
MySQL databáze. Asi by to v reálu dopadlo tak, že by sis udělal export ze
serveru a ten si potom projel na localu v té Javě. Nicméně vypadá to
pěkně. Nevím, jak by se chovalo na velkých datech že máš zobrazení v
objektu, možná by to bylo potom potřeba přebušit do nějakých polí,
protože Java nemá struct.
brisingr002
Ukládání opět INSERTem, Counter.php vypadá kompaktně, v database.php jsem
se zalekl toho $GLOBALS a schoval se pod stůl Vlastně nevím proč to tam je,
nikde jinde to nepoužíváš. Proměnné se stejně po skončení skriptu
smažou, takže to tam ani nezůstane. Je škoda, že tam máš jen unikátní
návštěvníky, chtělo by to i návštěvy a zobrazení, přitom to není
složitý dotaz.
Nejdále se tu dostal tedy Michal Žůrek - misaz, i když s tou Javou mi to
připadá překombinované
Získává tedy placku, napiš Míše jakou chceš. Brisingrovi by stačil
kousek, těším se na něj příště.
Pokud ti vadí INSERT, použij jinou databázi.
S tím logováním do souborů a dávkovým zápisem do DB jsi to přehnal. Tak se to opravdu nedělá.
Proč by se to nedělalo? Mám dojem, že jsi mi to radil dokonce ty Je to navíc atomická operace.
INSERT je atomická operace. Pokud potřebuješ výkon při zápisu (typické pro logování), tak to můžeš zapisovat do logu, ale už nesmíš vyhodnocovat závislosti typu unikátnost záznamu. Pouze logování. V tom případě ale databázi vůbec nepoužiješ.
Tak samozřejmě, budu to prát do souboru a pak si to nachroustám do databáze, když na rychlosti nezáleží. Tam si mohu dovolit spouštět analýzy a řešit unikátnost.
Koukám, že v podmínkách nebyla uvedena podmínka využití databáze. Logování přístupů do souboru a jeho následná analýza by byla výhodnější, pokud by k té analýze přistupoval pouze admin, což by splnilo zadání.
Ještě pro usnadnění logování jeden tip:
http://dev.mysql.com/…-engine.html
Napsal jsi to tak, že jsem si to vyložil jinak.
ty si ze mě děláš srandu? To jako vyhraju s takovým paskvilem, nicméně to co jsi vypsal je fakt. Javová aplikace není do reálného nasazení, nicméně jsem se chtěl naučit práci s databázi v javě a to se i povedlo. Vezmu si placku na javu, protože nové znalosti se týkaly právě javy. kdybych se nic nenaučil tak si za toto žádnou placku nevezmu.
Totiž ses na kód v javě asi nedíval moc důkladně, že: Tímto nedodělkem jsem však všem
chtěl ZDE ukázat že Machr není vyloženě soutěž ale spíš nás má
donutit se něco nového naučit. To píši všem těm kteří tu kód
skrývají tak že ty dokazy nedávají sem (někteří ani po skončení
soutěže), ale tobě do PM. přeci jestliže se chceme přiučit, poučit
ostatní o chybách a získat o naší práci názor, tak ji není třeba
skrývat. Kdybych toto zde nechtěl napsat, tak tu ten výtvor ani není.
Nevím proč nepoužívat insert, nezdá se mi to jako problém. Globals jsem
použil proto, abych ulehčil serveru vytváření proměnné. Zdálo se mi
nepohodlné vytvářet objekt při každé aktualizaci znovu. Takhle ulehčím
čas procesoru. Proto to GLOBALS. Pustil jsem se do toho půl hodiny před
ukončením, takže proto jsem nestihl úplně vše co bych chtěl, nicméně se
mi zdá zbytečné počítat každé zobrazení stránky. Není to jen na
unikátní návštěvníky, návštěvníci se každý den mohou připsat znovu.
Ale každopádně díky a
gratuluji misazovi, ikdyž moc nechápu proč to kombinoval s javou.
Ale globals není perzistentní, ztratí se po dokončení requestu. Vytvoření objektu není žádná zátěž, jediná zátěž ve webové aplikaci je databáze. Vím jak je započítáváš, protože jsem ten kód četl. Zobrazení ukládáš, proč je tedy nezahrnout i do statistik?
Na kód jsem se díval poměrně důkladně, jinak bych ti k tomu nenapsal
to, co jsem napsal. Samozřejmě nemohu u všech lidí zkontrolovat každou
řádku, to ti je snad jasné, někdy se přihlásí dost lidí. Jelikož se zde
zúčastnili jen 3 lidé, tak jsi z toho vyšel nejlépe. Přijde mi lepší
dát cenu někomu než nikomu, ale jestli ji nechceš, nenutím ti ji
Aha. Moje chyba. Sakra. A já měl zato, že to poté bude jeden objekt a
nebudou se jich tvořit desítky... Ano s tím zobrazováním jsem to mohl
udělat, ale už nebyl čas. Vážně jsem se rozhodl do toho jít asi půl
hodiny předtím a dost dlouho mi zabralo i to vymýšlení jak uložit ten
objekt. A ještě je to špatně...
Vidíš, kdyby ses nezúčastnil soutěže, tak bys ani netušil, že GLOBALS je zbytečné, přesněji na dvě věci. Víš na které...
Jojo. Jsem rád, že tu ty soutěže jsou. Alespoň mě to donutí použít
něco, co bych normálně nepoužil a zamyslet se i nad naprosto absurdními
věcmi.
Zobrazeno 40 zpráv z 40.