Pages:

New freeware plugin - simpleCounter v0.1 for QCMS v3.x

euphoria-art

Avatar: euphoria-art

2011-02-25 22:13

licznik jest ok, po prostu robiłem mapę witryny z tej strony http://www.g-sitemap-generator.com/ i przy generowaniu tej mapy pozliczał wejścia na każdy link.

euphoria-art

Avatar: euphoria-art

2011-02-27 07:38

po paru dniach mi się sam wyzerował, zlicza od początku, a więc nie jest ok

boboo

Avatar: boboo

2011-02-27 14:23

Czyżby brak LOCK_EX to spowodował?

http://it-service.kimla.de

euphoria-art

Avatar: euphoria-art

2011-02-27 16:01

przetestuje go jeszcze, jak się znowu wyzeruje to będzie trzeba go usunąć. Boboo co to jest LOCK_EX? bo nie wiem o czym piszesz

boboo

Avatar: boboo

2011-02-27 17:14

To jest zablokowanie pliku, przy jego nadpisywaniu. Jeśli proces jakiegoś usera zapisuje licznik z nowym stanem i w tym samym momencie inny user chce go odczytać, to zdarza się, że odczytuje "kaszanę". A w kodzie jest: jeśli nie ma arrayu Visits, to stwórz nowy wyzerowany plik (1,1). Tamten poprzednik jest już gotowy z pisaniem, ale ten następny ma w pamieci, że tego pliku nie ma i sruuu, robi nowy pusty.
Jeśli byłby ustawiony lock_ex, to ów user chcący odczytać, musiałby grzecznie czekać aż poprzednik zapisze licznik i zwolni go komendą lock_un.
W takim przypadku "kaszan" niejako wykluczony.

http://it-service.kimla.de

euphoria-art

Avatar: euphoria-art

2011-02-27 18:19

gdzie mam ten wyzerowany plik stworzyć (1,1) mam dopisać linię drugą to tamtego?

boboo

Avatar: boboo

2011-02-27 19:05

Poczekaj trochę,
wstawię tu poprawkę. Może jeszcze dziś.
Ale najpierw kolacyjka ;-)

http://it-service.kimla.de

boboo

Avatar: boboo

2011-02-27 20:01

Zamień najlepiej całą funkcję:

function simpleCounter(){
if(is_file(DB_COUNTER)){
$aFile=file(DB_COUNTER);
if(isset($aFile[1])&&!empty($aFile[1])){
$aExp=explode('$',$aFile[1]);
$sDate=date('Y-m-d');
$aVisits[0]=$aExp[0];
$aVisits[1]=(!empty($aExp[2])&&$aExp[2]==$sDate)?$aExp[1]:0;
}
if(!isset($_COOKIE['osSimpleCounter'])){
$sSave='<?php exit;?>'."\n";
if(isset($aVisits)){
$aVisits[0]++;
$aVisits[1]++;
}
else
$aVisits=Array(1,1);
@file_put_contents(DB_COUNTER,$sSave.$aVisits[0].'$'.$aVisits[1].'$'.date('Y-m-d').'$'."\ n",LOCK_EX);
setcookie('osSimpleCounter',true,time()+7200);
}
if(isset($aVisits))
return $aVisits;
else
return Array(1,1);
}
}

Przy okazji: te 7200 to są sekundy. Czyli cookie znika po dwóch godzinach i ten sam user może znowu ci podbić licznik.

http://it-service.kimla.de

euphoria-art

Avatar: euphoria-art

2011-02-27 20:29

Dzieki boboo podmieniłem, jest na razie ok, jak się wyzeruje to dam znać;)

a teraz sprawa życia i śmierci - jest to dla mnie bardzo ważne pisałem to w poście dotyczącym user online: i pisze jeszcze raz

Bobo dzięki za przepis na licznik user online ( http://opensolution.org/Quick.Cms/forum/?p=readTopic&nr=1708 ), jak możesz to napisz co mam jeszcze dodatkowo zrobić żeby był zintegrowany w plugin simplecounter, przykład pod linikiem:
http://img821.imageshack.us/img821/4736/beztytuusgo.jpg

bardzo Cie proszę, jak mam ten kod tam wsadzić żeby wyglądało dokładnie jak wyżej na fotce.

boboo

Avatar: boboo

2011-02-27 22:07

Trzeba ciut zmienić w tym, co z onlineCountera wsadziłeś do container.tpl
Z tej linijki:
<span>$lang[Visits_today]: <strong>$aVistisCounter[1]</strong></span><em>$lang[Visits_all_time]: <strong>$aVistisCounter[0]</strong></em>

Zrób:
<span>$lang[Visits_today]: <strong>$aVistisCounter[1]</strong></span><span>Online: <strong>$iUsersOnline</strong></span>
<br/>
<em>$lang[Visits_all_time]: <strong>$aVistisCounter[0]</strong></em>

http://it-service.kimla.de

euphoria-art

Avatar: euphoria-art

2011-02-27 23:01

dzięki boobo wszystko działa jak należy i wygląda tak jak trzeba,
dzięki

Cinek.ck

Avatar: Cinek.ck

2011-04-06 08:02

Licznik wyzerował się pod Quick.Cms.Lite v3 i na serwerach Netarteri na paru kontach... miał już ktoś tak ? może na Netarteri jakaś blokada, limit, jak pisałem do nich już parę razy, to odpisują ze z ich strony jest wszystko ok...Ma ktoś pomysł co z tym zrobić?

lordofhares.com

euphoria-art

Avatar: euphoria-art

2011-08-15 22:19

boboo, funkcja wyżej nie pomogła, licznik w ostatnich dniach wyzerował mi się dwa razy

boboo

Avatar: boboo

2011-08-16 06:31

tu jest 'moja' funkcja:
function simpleCounter(){
$sFile='db/counter.php';
$aFile=file($sFile);
$sUserAgent=$_SERVER['HTTP_USER_AGENT'];
if(isset($aFile[1])&&!empty($aFile[1])){
$aExp=explode('$',$aFile[1]);
$sDate=date('Y-m-d');
$aVisits[0]=$aExp[0];
$aVisits[1]=(!empty($aExp[2])&&$aExp[2]==$sDate)?$aExp[1]:0;
}
if(!isset($_COOKIE['sCounter'])){
$sSave='<?php exit;?>'."\n";
if(isset($aVisits)
&&stristr($sUserAgent,'bot')===false
&&stristr($sUserAgent,'smartlinks')===false
&&stristr($sUserAgent,'slurp')===false
&&stristr($sUserAgent,'spider')===false){
$aVisits[0]++;
$aVisits[1]++;
}
@file_put_contents($sFile,$sSave.$aVisits[0].'$'.$aVisits[1].'$'.date('Y-m-d').'$'."\n& quot;,LOCK_EX);
@setcookie('sCounter',true,time()+7200);
}
if(isset($aVisits))
return $aVisits;
else
return Array(1,1);
}
wyrzuciłem z niej opcję zerowania licznika
( else $aVisits=Array(1,1); )

jak do tej pory - działa.

it-service.kimla.de

euphoria-art

Avatar: euphoria-art

2011-08-16 23:40

ze swojej też wyrzuciłem else $aVisits=Array(1,1); czas pokaże ;) dzięki

euphoria-art

Avatar: euphoria-art

2012-01-31 16:57

co za badziew znowu sie wyzerował, Czas najwyzszy poprawić ten szajs, kiedy się ukaże wersja 0.2?

Pages:
Back to top
about us | contact