Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten Ansicht
  #1  
Alt 08.11.06, 16:54
Benutzerbild von Junior
TYPO3 Forum Team
Administrator
 
Registriert seit: 18.08.04
Ort: Zürich
Alter: 33
Beiträge: 2.776
Junior eine Nachricht über Skype™ schicken
Wie kann ich cc_awstats automatisieren?

Die Erweiterung AWSTATS gibt im Backend Statistiken über die Besucher der Webseite aus. Das Aktualisieren der Statistik erfolgt über den Link "Jetzt aktualisieren" im AWSTATS Modul.

Wurden die Statistiken längere Zeit nicht aktualisiert oder werden die IP-Adressen im Logfile zu Domainnamen aufgelöst, so dauert die Erstellung der Statistik unter Umständen eine ganze Weile.

Es kann daher sinnvoll sein, die Statistik z.B. stündlich automatisch zu aktualisieren, da die seit der letzten Aktualisierung hinzugekommene Datenmenge relativ klein ist.

Ich habe nach einer Möglichkeit gesucht, die Statistik mittels eines Cronjobs regelmässig upzudaten. Dazu habe ich das Modul von Rene Fritz etwas erweitert. Bei jedem Aufruf von AWSTATS im Backend von TYPO3 wird nun eine Datei "cron_script.sh" erzeugt. Diese enthält die notwendige Konfiguration, um das Perlscript von AWSTATS aufzurufen.

Die Erweiterung wurde von mir nur unter Linux getestet (unter Windows gibt es ja keine Cronjobs...).

Installation:
  1. die Datei index.zip herunterladen, entpacken und in das Verzeichnis site/typo3conf/ext/cc_awstats/mod1 kopieren (die dort vorhandene index.php Datei vorher sichern)
  2. Vom TYPO3 Backend aus das AWSTATS Modul aufrufen und die Statistik über den Link aktualisieren
  3. In dem oben genannten Verzeichnis steht jetzt eine Datei "cron_script.sh", diese Datei umbenennen (z.B. in "update") und mit chmod +x update ausführbar machen
  4. Jetzt kann in crontab folgende Zeile eingefügt werden, um die Aktualsierung einmal pro Stunde auszuführen:

Code:
0 * * * * www /site/typo3conf/ext/cc_awstats/mod1/update > /dev/null
('www' ist der User, unter dem der Webserver läuft, dadurch wird verhindert, dass das Skript als 'root' ausgeführt wird)

Dabei muss "site" natürlich jeweils durch den Pfad zur TYPO3-Seite ersetzt werden.

Die gemachten Änderungen werden vormutlich in künftige Versionen des AWSTATS-Moduls von Rene einfliessen.

Dank an Christian Kuhn für seine Hinweise zu Skripten und cronjobs.

Download geänderte index.php für das AWSTATS-Modul Version 0.7.1 (6.0 kB)
index.zip

© JWeiland www.jweiland.net/typo3cms/

Geändert von Junior (10.11.06 um 11:49 Uhr).
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #2  
Alt 09.03.07, 13:06
Forum Zuschauer
 
Registriert seit: 09.03.07
Beiträge: 5

Hallo,

einfacher gehts mit ics_awstats, da dort das cron script gleich mitgeliefert wird

valli
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #3  
Alt 19.05.08, 16:10
Forum Aktivist
 
Registriert seit: 14.01.08
Beiträge: 57

Hallo,

der thread ist zwar nicht mehr ganz jungfräulich, aber egal...
Zitat:
einfacher gehts mit ics_awstats, da dort das cron script gleich mitgeliefert wird
Diese erfreuliche Erfahrung mache ich augenblicklich nicht!

Beim Ausführen des folgenden scripts

PHP-Code:
passthru('/usr/bin/php /www/htdocs/../typo3conf/ext/ics_awstats/mod1/awstats-update.phpcron'); 
bekomme ich folgenden output:

Perl was not running as expected. Please check the following points:
- php-'safe_mode' must not be enabled (Current configuration: safe_mode=0)
- the ics_awstats extension misconfiguration (Current configuration: perlbin=/usr/bin/perl)
- check the permissions of '/usr/bin/perl'

Die selbe Meldung bekomme ich, wenn ich das perl-script direkt aufrufe:

PHP-Code:
passthru('/usr/bin/perl /www/htdocs/../typo3conf/ext/ics_awstats/awstats/awstats.pl -config=www.tralllalla.de -update'); 
Vetstehen tu ich es nicht, weil ja beim manuellen update exakt der selbe scriptaufruf erfolgt und es da ja funktioniert.

Der safe_mode ist aus, die permissions kann ich setzen wie ich will und perl läuft ansonsten anstandslos!

Mich irritiert, dass ich nicht wirklich viel zum Thema im Netz gefunden habe, so dass ich davon ausgehe, dass es bei den meisten funktioniert!

Aber warum???

Grüße an alle
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #4  
Alt 19.05.08, 16:45
Forum Zuschauer
 
Registriert seit: 09.03.07
Beiträge: 5

Hallo Gredini,

Wieso wird das cronscript via passthru aufgerufen?

Es ist moeglich, dass sich die php.ini in der cmdline und jene von mod_php
(respektive php-fastcgi) unterscheiden.

Lass mal folgendes in einer shell ausfuehren:
Code:
echo '<?php phpinfo() ?>' | /usr/bin/php
Was steht bei disable_functions, safe_mode oder aehnlichem?

Gruss valli
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #5  
Alt 19.05.08, 19:41
Forum Aktivist
 
Registriert seit: 14.01.08
Beiträge: 57

Hallo valli,

danke erstmal, dass Du Dich bemühst!

Zitat:
Wieso wird das cronscript via passthru aufgerufen?
Es handelt sich hierbei um einen all-inkl-Webspace ohne shell-zugang und somit leider auch ohne crontabs etc. Cronjobs kann man nur in der Form aktivieren, dass man "normale" php-scripts aufruft und von dort aus eben mit exec, passthru usw. die jeweiligen shell-scripts angeht.

Es passt ja im prinzip auch alles, die phpinfo bringt nichts ungewähnliches, es werden mehrere irgendwas.phpsh scripte auf diese Weise aufgerufen und diverse perl-scripte laufen problemlos.

Ich verstehe nicht, wieso der Aufruf aus Typo3 selbst heraus funktionieren kann, wo der doch genauso aus php heraus mit "exec('/usr/bin/perl..." erfolgt.

grüsse

Geändert von Gredini (19.05.08 um 21:30 Uhr).
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #6  
Alt 20.05.08, 08:04
Forum Zuschauer
 
Registriert seit: 09.03.07
Beiträge: 5

Hallo Gredini,

Zitat:
Ich verstehe nicht, wieso der Aufruf aus Typo3 selbst heraus funktionieren kann, wo der doch genauso aus php heraus mit "exec('/usr/bin/perl..." erfolgt.
Geben die zwei folgenden Befehle wirklich dasselbe zurueck:
PHP-Code:
phpinfo(); 
PHP-Code:
passthru('echo "<?php phpinfo() ?>" | /usr/bin/php');
Was ich nicht verstehe ist wieso folgender Befehl ...
PHP-Code:
passthru('/usr/bin/perl /www/htdocs/../typo3conf/ext/ics_awstats/awstats/awstats.pl -config=www.tralllalla.de -update'); 
folgende Meldung ausgeben kann:
Perl was not running as expected. Please check the following points:
- php-'safe_mode' must not be enabled (Current configuration: safe_mode=0)
- the ics_awstats extension misconfiguration (Current configuration: perlbin=/usr/bin/perl)
- check the permissions of '/usr/bin/perl'

Der Code welcher dies ausgibt, wird so naemlich gar nicht durchlaufen.

valli
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #7  
Alt 20.05.08, 11:53
Forum Aktivist
 
Registriert seit: 14.01.08
Beiträge: 57

Hallo valli,

die beiden phpinfo-aufrufe ergeben jeweils das gleiche.

safe_mode off, nichts disabled usw.

Zitat:
Was ich nicht verstehe ist wieso folgender Befehl ...
PHP-Code:
passthru('/usr/bin/perl /www/htdocs/../typo3conf/ext/ics_awstats/awstats/awstats.pl -config=www.tralllalla.de -update'); 
folgende Meldung ausgeben kann:
Perl was not running as expected. Please check the following points:
- php-'safe_mode' must not be enabled (Current configuration: safe_mode=0)
- the ics_awstats extension misconfiguration (Current configuration: perlbin=/usr/bin/perl)
- check the permissions of '/usr/bin/perl'

Der Code welcher dies ausgibt, wird so naemlich gar nicht durchlaufen.
Ich habe das genze Prozedere jetzt nochmal durch exerziert - das war ein Fehler meinerseits - tut mir leid!!!

Die Meldung kommt natürlich nur beim Aufruf des update-scripts!
Und im BE steht dann bei der Auswahl des logfiles "Aktualisierung im Gange (Lösche Aktualisierungs-Sperrdatei)".
Allerdungs steht das ewig da und es wird nie was aktualisiert, weil wahrscheinlich im Anschluß daran das perl-script gestartet wird und dieses (zumindest in der update-routine) nicht läuft. Die angebliche Aktualisierungs-Sperrdatei kann ich dann löschen, worauf die Meldung wieder weg ist und dann ist wieder alles wie gehabt...

Beim direkten starten des perl-scripts kommt keine Meldung und gar nichts.




Was ich dabei schon mal generell nicht verstehe ist folgendes:

Es gibt in der class.tx_icsawstats_awstats.php zwei relevante Funktionen für den Aufruf des perl-scripts.

Für den manuellen Start aus dem BE heraus:

PHP-Code:
function call_awstats($t3log$aws_wrapper$dbg=0) {
.
.
.

passthru($syscmd$retval);

und für den cronjob bzw. das update-script:

PHP-Code:
function call_awstats_cli_update($t3log) {
.
.
.

exec($syscmd$output$retval);

Wenn da irgendwas disabled wäre oder der safe_mode plötzlich on oder was weiss ich auch immer (was wohlgemerkt nicht der Fall ist!), dann dürften da doch beide nicht gehen!? Oder etwa doch???

Gredini
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #8  
Alt 20.05.08, 13:20
Forum Zuschauer
 
Registriert seit: 09.03.07
Beiträge: 5

Hallo Gredini,

Kannst du mal das file mod1/class.tx_icsawstats_awstats.php wie
folgt verwuesten. In der function get_perlbin() folgendes aendern
Vorher:
PHP-Code:
...
exec($pbcmd$testoutput$retval);
if (
$retval || (! preg_match('/^<pv>([\d\.]+)<\/pv>$/'$testoutput[0], $matches)) ) {
... 
Nachher:
PHP-Code:
...
exec($pbcmd$testoutput$retval);
echo(
"pbcmd=".$pbcmd."\n");
echo(
"testoutput=".$testoutput[0]."\n");
echo(
"retval=".$retval."\n");
die();
if (
$retval || (! preg_match('/^<pv>([\d\.]+)<\/pv>$/'$testoutput[0], $matches)) ) {
... 
Dies gibt vielleicht ein Anhaltspunkt.

valli

PS: Findest du ein Anhaltspunkt im PHP error-log?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #9  
Alt 20.05.08, 13:39
Forum Aktivist
 
Registriert seit: 14.01.08
Beiträge: 57

Hallo valli,

die Verwüstung brachte Folgendes zu Tage:

PHP-Code:
pbcmd=/usr/bin/perl '/www/htdocs/../typo3conf/ext/ics_awstats/mod1/get_pv.pl' testoutputretval
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
Antwort


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist Aus.
HTML-Code ist An.
Trackbacks are An
Pingbacks are An
Refbacks are An


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[jw_calendar] Liste mit den nächsten Terminen automatisieren geht nicht (Startzeit verstellt sich) hpatrick Kalender 10 26.04.07 13:18
ics_awstats/cc_awstats: HTTP Fehlercodes Spice1983 Alle anderen Extensions 1 26.04.07 08:00
cc_awstats wird nicht angezeigt Kerem Alle anderen Extensions 0 04.09.06 08:04
Automatisieren von Berichten... tom613 TYPO3 4.x Fragen und Probleme 8 06.07.06 16:33
Update von cc_awstats 0.9.0 Junior Alle anderen Extensions 2 08.03.06 07:30


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:51 Uhr.


Powered by vBulletin® Version 3.6.8 Patch Level 2 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0
Template-Modifikationen durch TMS