Page: | 1 | 2 |
Topic:

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

euphoria-art
See profile of: euphoria-art
2011-02-25 22:13:33
Votes: 0
Vote answer in plus Vote answer in minus
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
See profile of: euphoria-art
2011-02-27 07:38:30
Votes: 0
Vote answer in plus Vote answer in minus
po paru dniach mi się sam wyzerował, zlicza od początku, a więc nie jest ok
boboo
See profile of: boboo
2011-02-27 14:23:25
Votes: 0
Vote answer in plus Vote answer in minus
Czyżby brak LOCK_EX to spowodował?

-------------------------------------------------------
http://it-service.kimla.de
euphoria-art
See profile of: euphoria-art
2011-02-27 16:01:02
Votes: 0
Vote answer in plus Vote answer in minus
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
See profile of: boboo
2011-02-27 17:14:32
Votes: 0
Vote answer in plus Vote answer in minus
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
See profile of: euphoria-art
2011-02-27 18:19:54
Votes: 0
Vote answer in plus Vote answer in minus
gdzie mam ten wyzerowany plik stworzyć (1,1) mam dopisać linię drugą to tamtego?
boboo
See profile of: boboo
2011-02-27 19:05:05
Votes: 0
Vote answer in plus Vote answer in minus
Poczekaj trochę,
wstawię tu poprawkę. Może jeszcze dziś.
Ale najpierw kolacyjka ;-)

-------------------------------------------------------
http://it-service.kimla.de
boboo
See profile of: boboo
2011-02-27 20:01:08
Votes: 0
Vote answer in plus Vote answer in minus
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
See profile of: euphoria-art
2011-02-27 20:29:41
Votes: 0
Vote answer in plus Vote answer in minus
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
See profile of: boboo
2011-02-27 22:07:20
Votes: 0
Vote answer in plus Vote answer in minus
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
See profile of: euphoria-art
2011-02-27 23:01:17
Votes: 0
Vote answer in plus Vote answer in minus
dzięki boobo wszystko działa jak należy i wygląda tak jak trzeba,
dzięki
Cinek.ck
See profile of: Cinek.ck
2011-04-06 08:02:45
Votes: 0
Vote answer in plus Vote answer in minus
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
See profile of: euphoria-art
2011-08-15 22:19:17
Votes: 0
Vote answer in plus Vote answer in minus
boboo, funkcja wyżej nie pomogła, licznik w ostatnich dniach wyzerował mi się dwa razy
boboo
See profile of: boboo
2011-08-16 06:31:46
Votes: 0
Vote answer in plus Vote answer in minus
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
See profile of: euphoria-art
2011-08-16 23:40:02
Votes: 0
Vote answer in plus Vote answer in minus
ze swojej też wyrzuciłem else $aVisits=Array(1,1); czas pokaże ;) dzięki
euphoria-art
See profile of: euphoria-art
2012-01-31 16:57:20
Votes: 0
Vote answer in plus Vote answer in minus
co za badziew znowu sie wyzerował, Czas najwyzszy poprawić ten szajs, kiedy się ukaże wersja 0.2?
Page: | 1 | 2 |
 


If You want to do this operation, please log in first ».
If You don't have an account please register ».
Valid XHTML 1.0! Valid CSS! version: 2.2.0-alfa | powered by Quick.Forum