1.9 / GeoIP mit Host Europe / PECL?

Moin Moin

  1. Ok, nun habe ich verstanden um was es bei dir geht.

  2. Sehr merkwürden, denn bei mir sieht das Ergebnis - nach langer Zeit - dann wie folgt aus:


[2013-01-10 13:09:42] [09873b7e] [6.96 Mb] [note] Found working provider: geoip_pecl
[2013-01-10 13:09:42] [09873b7e] [6.96 Mb] 548541 rows to process in piwik_log_visit and piwik_log_conversion...
[2013-01-10 13:09:42] [09873b7e] [7.09 Mb] 0% done...
...
[2013-01-10 14:18:17] [ecf8e89f] [7.07 Mb] 100% done...

[quote=McHunter]
2) Sehr merkwürden, denn bei mir sieht das Ergebnis - nach langer Zeit - dann wie folgt aus:[/quote]

Jo, soweit war ich auch schon mal. Nur wenn Du Dir (nach Löschen der alten Piwik-Archive und Neuerstellung der Auswertung) mal die Einträge anschaust, wirst du feststellen, dass die GeoIP-Location bei den Alteinträgen nach wie vor fehlt…

Deshalb würde ich gerne mal einen Durchlauf mit GeoIP (PHP) starten, nur drängelt sich da immer GeoIP (PECL) vor…

[quote=piwiker]

  1. Jo, soweit war ich auch schon mal. Nur wenn Du Dir (nach Löschen der alten Piwik-Archive und Neuerstellung der Auswertung) mal die Einträge anschaust, wirst du feststellen, dass die GeoIP-Location bei den Alteinträgen nach wie vor fehlt…

  2. Deshalb würde ich gerne mal einen Durchlauf mit GeoIP (PHP) starten, nur drängelt sich da immer GeoIP (PECL) vor…[/quote]

Hallo piwiker

  1. Bei mir sieht alles soweit normal aus. Das es sehr viele mit “Unbekannt” gibt ist bekannt, hat seine Grüne und wurde hier im Forum auch schon oftmal - auch von mir - angesprochen/behandelt.

  2. Dann führe folgende Änderung in der /piwik/misc/others/geoipUpdateRows.php durch:

Gehe zu Zeile 128 und deaktiviere diese wie folgt:


// $provider = new Piwik_UserCountry_LocationProvider_GeoIp_Pecl();

Dann füge folgende Zeile darunter ein:


$provider = new Piwik_UserCountry_LocationProvider_GeoIp_PHP();

Dann speichern und das Script ausführen. Anschließend sollte es dann auch bei dir so angezeigt wwerden:


[2013-01-10 16:16:41] [0c184a1d] [7.91 Mb] [note] Found working provider: geoip_php
[2013-01-10 16:16:41] [0c184a1d] [7.91 Mb] 548695 rows to process in piwik_log_visit and piwik_log_conversion...

Wundere dich aber nicht wenn das Script - je nach DB Größe - dann ellenlang dauert bis es fertig ist!


[note] Falling back to PHP API. This may become too slow for you.

Bitte deine Rückmeldung hier nicht vergessen!

Dieser Tipp war der Bringer, danke (tu) !

Beschriebene Änderung habe ich in diesem Bugfix der geoipUpdateRows.php angewendet.

Auswahl GeoIP (PHP) in den Piwik-Einstellungen.

Nach Einloggen in Piwik (!) wird den Alteinträgen nach Aufruf der geoipUpdateRows.php im Browser die Location zugeordnet. Kann etwas dauern…

Damit man das in den Piwik-Auswertungen sehen kann, müssen die in der Datenbank gespeicherten Altauswertungen gelöscht werden; erst dann werden die Auswertungen mit GeoIP-Location neu angelegt und gezeigt.

Getestet mit:

Moin Moin

Das freut mich! :)-D

Es ist zwar eine sog. Dirty-Lösung, aber wenn es funktioniert dann ist es ja OK.

Allerdings sollte die neue Zeile so aussehen:


$provider = new Piwik_UserCountry_LocationProvider_GeoIp_Php();

Also hinten “GeoIp_Php();” und nicht “GeoIp_PHP();”


Nun wundert mich nur noch warum es bei dir mit GeoIp_PECL auf einem Host Europe Webpack L nicht funktioniert und bei mir “scheinbar” mit einem Host Europe Virtual Managed Server dagegen schon. Oder ich habe da etwas übersehen!?

[quote=McHunter]


$provider = new Piwik_UserCountry_LocationProvider_GeoIp_PHP();

Allerdings sollte die neue Zeile so aussehen:


$provider = new Piwik_UserCountry_LocationProvider_GeoIp_Php();

Also hinten “GeoIp_Php();” und nicht “GeoIp_PHP();”[/quote]

Hier hat der Durchlauf mit “GeoIp_PHP();” geklappt, entsprach ja auch Deinem Vorschlag.

[quote=McHunter]
Nun wundert mich nur noch warum es bei dir mit GeoIp_PECL auf einem Host Europe Webpack L nicht funktioniert und bei mir “scheinbar” mit einem Host Europe Virtual Managed Server dagegen schon. Oder ich habe da etwas übersehen!?[/quote]

PECL braucht wohl diverse Voraussetzungen in der Serverkonfiguration, vielleicht gibt es da einen Unterschied zwischen dem ‘Webpack L’ und dem größeren Bruder ‘Host Europe Virtual Managed Server’?

Anbei mal das, was ich zu PECL via phpinfo finde, vielleicht gibt es da Unterschiede!?

[quote=piwiker]

  1. PECL braucht wohl diverse Voraussetzungen in der Serverkonfiguration, vielleicht gibt es da einen Unterschied zwischen dem ‘Webpack L’ und dem größeren Bruder ‘Host Europe Virtual Managed Server’?

  2. Anbei mal das, was ich zu PECL via phpinfo finde, vielleicht gibt es da Unterschiede!?[/quote]

Moin Moin

  1. Es geht hier nicht um PECL (PHP Extension Community Library) sondern doch um das GeoIP-PECL.

  2. Wenn dann schaue mal unter “geoip” in deiner phpinfo.php nach.

Bei mir sieht es darin so aus:

[quote=McHunter]
Nun wundert mich nur noch warum es bei dir mit GeoIp_PECL auf einem Host Europe Webpack L nicht funktioniert und bei mir “scheinbar” mit einem Host Europe Virtual Managed Server dagegen schon. Oder ich habe da etwas übersehen!?[/quote]
Das möchte ich gern sehen. Laut der Aussage des Supports (siehe mein Post weiter oben) läuft GeoIP (PECL) nicht vernünftig auch auf dem Virtual Server Managed L.
Auch Dein Post oben als Output des Testscripts verweist maximal auf eine Land-Datenbank, deren Stand uralt sein kann.

[quote=Galizianer]

[quote=McHunter]
Nun wundert mich nur noch warum es bei dir mit GeoIp_PECL auf einem Host Europe Webpack L nicht funktioniert und bei mir “scheinbar” mit einem Host Europe Virtual Managed Server dagegen schon. Oder ich habe da etwas übersehen!?[/quote]
Das möchte ich gern sehen. Laut der Aussage des Supports (siehe mein Post weiter oben) läuft GeoIP (PECL) nicht vernünftig auch auf dem Virtual Server Managed L.
Auch Dein Post oben als Output des Testscripts verweist maximal auf eine Land-Datenbank, deren Stand uralt sein kann.[/quote]

Moin Moin

Sorry, da habe ich mich unvollständig ausgedrückt, denn:

  1. Bezog sich meine vg. Aussage lediglich auf das geoipUpdateRows.php Script welches bei mir ja als GeoIP-PECL durchlief.

  2. Ich doch auch niemals geschrieben hatte, dass ich als Standortbestimmung GeoIP (PECL) benutze. Im gegenteil, ich hatte doch obenstehend folgendes geschrieben:

In Piwik unter GeoIP (PECL) wird - jedenfalls bei mir - folgendes angezeigt:


Note: The 'geoip.custom_directory' PHP ini option is set to ''.
This GeoIP implementation has access to the following types of databases: Land.

Was dann GeoIP (PECL) auch bei mir ausgibt:


Diese Implementierung bestimmt Ihren Standort als: 

Org: unbekannt
ISP: unbekannt

Done, hier gibt es einen Unterschied, s.u.:
Statt:


geoip library version 1004004 

habe ich hier:


geoip library version 1004007 

Weiterhin gibt GeoIP (PECL) auf einem HE Webpack-L nur das Land aus, GeoIP (PHP) zeigt schon in den Piwik-Standorteinstellungen Koordinaten, Stadt und Land.
:S

[quote=piwiker]

  1. Done, hier gibt es einen Unterschied, s.u.:
    Statt:

geoip library version 1004004 

habe ich hier:


geoip library version 1004007 

  1. Weiterhin gibt GeoIP (PECL) auf einem HE Webpack-L nur das Land aus, GeoIP (PHP) zeigt schon in den Piwik-Standorteinstellungen Koordinaten, Stadt und Land.
    :S[/quote]

Moin Moin

  1. Ich sehe die Ursache nicht in der geoip libary version sondern eher in einer Einstellung von Host Europe. Evtl. für die HE Server Auswertungen (Usage Statistics) also dieses -> “Webstatistiken von Webalizer 2 ansehen”.
    In dem werden nämlich auch nur lediglich die Länder der Besucher ausgewertet und angezeigt. Die Grund könnte wg. Datenschutz sein.

Jedenfalls bin ich inzwischen der Meinung, dass HE nicht will dass Ihre Webhosting Kunden mit dem GeoIP PECL eine Standortbestimmung der Besucher vornehmen können.

Auch wenn ich in der .htaccess den Eintrag - wie von obenstehend von “daCaPo” geschrieben - folgenden angepassten Eintrag - einfüge:


php_value geoip.custom_directory /is/htdocs/wpNNNNNNN_XXXXXXXXXX/piwik/misc

wird das zwar in der phpino als auch in Piwik korrekt angezelt, aber dennoch erfolgt lediglich eine Landzuordnung.

  1. Hmm, bei mir wird mit GeoIP (PECL) in der Standortbestimmungs-Seite nicht einmal das Land angezeigt.

[quote=McHunter]
Auch wenn ich in der .htaccess den Eintrag - wie von obenstehend von “daCaPo” geschrieben - folgenden angepassten Eintrag - einfüge:


php_value geoip.custom_directory /is/htdocs/wpNNNNNNN_XXXXXXXXXX/piwik/misc

wird das zwar in der phpinfo als auch in Piwik korrekt angezelt, aber dennoch erfolgt lediglich eine Landzuordnung.[/quote]

Habe gerade mal testhalber die .htaccess angepasst.
Pfad zu GeoIP wird via phpinfo korrekt angezeigt, allerdings wird weiterhin bei GeoIP (PECL) nur das Land (trotz der city.dat) angezeigt…

[quote=piwiker]
Habe gerade mal testhalber die .htaccess angepasst.
Pfad zu GeoIP wird via phpinfo korrekt angezeigt, allerdings wird weiterhin bei GeoIP (PECL) nur das Land (trotz der city.dat) angezeigt…[/quote]

Richtig, denn die HE Server php.ini ist einer (Kunden) .htaccess vorrangig!
Und mit ini_set funktioniert es ebenfalls nicht. Das habe ich schon getestet.

[quote=capedfuzz]

[quote=dragonx86]
It’s not possible to fill this php setting into php and ship it into piwik (to prevent compilcated installation)?[/quote]

If you mean using ini_set to set it then no, since some shared hosts will disable it, and besides i’m sure some will not want to store the databases w/ Piwik (if that’s what you meant).

Btw, can you tell me what’s in your /etc/php/geoip/ directory? In our tests the PECL module would only work w/ the city database if it was named GeoIPCity.dat. It would be good to know if this is not always true.[/quote]
Quelle: http://forum.piwik.org/read.php?2,95234

Wenn du folgendes Test-Script mal einsetzt:


<?php
ini_set('geoip.custom_directory','/tmp/');
$infos = geoip_db_get_all_info();
$info  = array_shift($infos);

var_dump( $info['filename'] );
?>

Quelle: https://bugs.php.net/bug.php?id=61607

Die Zeile mit “ini_set” dann auch anpassen mit deinem …/piwik/misc/" Verzeichnins. Obwohl das eigentlich egal ist, denn wenn du dieses auskommentierst, wird auch folgendes ausgegegen:


string(26) "/usr/share/GeoIP/GeoIP.dat"

Dann wirst du:

  1. sehen, das die HE Geo DB hier liegt → “/usr/share/GeoIP/GeoIP.dat”

und

  1. das diese nicht die für Piwik notwendige “GeoIPCity.dat” ( ~17,5 MB ) ist, sondern die wesentlich kleinere “GeoIP.dat” [ ~843 KB ).
    OK, die Dateigröße zeigt das Script nicht an.
    Aber hier siehst du es → …/piwik/misc

Aufgrund der Größe der HE GeoIP.dat schließe ich daraus, das diese dann auch gar keine Einträge für die Stadt-Standortbestimmungen enthält.

Somit ist die obenstehende Aussage von Galizianer dann wohl auch richtig:


Ich habe heute bereits mit dem HE Support telefoniert und soll morgen eine Email Antwort dazu erhalten. Die stelle ich dann hier rein.

[quote=McHunter]
Auch wenn ich in der .htaccess den Eintrag - wie von obenstehend von “daCaPo” geschrieben - folgenden angepassten Eintrag - einfüge:


php_value geoip.custom_directory /is/htdocs/wpNNNNNNN_XXXXXXXXXX/piwik/misc

wird das zwar in der phpino als auch in Piwik korrekt angezelt, aber dennoch erfolgt lediglich eine Landzuordnung.

  1. Hmm, bei mir wird mit GeoIP (PECL) in der Standortbestimmungs-Seite nicht einmal das Land angezeigt.[/quote]

zu 1. Wie ich oben bereits geschrieben hatte, handelt es sich um einen Bug, oder besser ein fehlendes Feature und nur ein Eintrag in der php.ini hat Auswirkungen. Einträge in php oder der .htaccess werden durch das PECL-Modul schlicht ignoriert.

zu 2. das ist bei mir genauso. Ich vermute mal, wenn das PECL keine Standortbestimmung liefert, bleibt die ursprüngliche auf Basis der Browsersprache bestehen.

[quote=Galizianer]
zu 1. Wie ich oben bereits geschrieben hatte, handelt es sich um einen Bug, oder besser ein fehlendes Feature und nur ein Eintrag in der php.ini hat Auswirkungen. Einträge in php oder der .htaccess werden durch das PECL-Modul schlicht ignoriert.

zu 2. das ist bei mir genauso. Ich vermute mal, wenn das PECL keine Standortbestimmung liefert, bleibt die ursprüngliche auf Basis der Browsersprache bestehen.[/quote]

n´Abend

  1. Es ist kein Bug.

  2. Bitte nochmals lesen, was doch auch mit deiner vorherigen Aäßerung identisch ist.

[quote=McHunter]
Ich habe heute bereits mit dem HE Support telefoniert und soll morgen eine Email Antwort dazu erhalten. Die stelle ich dann hier rein.[/quote]

Heute habe ich endlich eine Antwort von Host Europe dazu erhalten:

Heute habe ich folgende korrigierte Antwort von Host Europe dazu erhalten:

Hallo zusammen,
ich habe heute ein Update zu meiner Anfrage von Anfang Januar erhalten. Es besteht Hoffnung, nur wann ist offen. :slight_smile:

Ich gehe davon aus, dass sich die Tests auf eine PHP Version 5.4.x beziehen, in der das Custom Directory sauber via ini_set gesetzt werden kann. Ich halte Euch auf dem Laufenden.

Hmmm, auf dem hiesigen HE-Webpack-L läuft PHP Version 5.3.17.

Installiert ist Piwik 1.9.2 aus der (ehemaligen) latest.zip, die ‘GeoIPCity.dat’ unter …\piwik\misc\GeoIPCity.dat wird anstandslos verwendet und läßt sich via FTP-Upload auch updaten.

Land, Bundesland und Stadtdaten werden angezeigt, lediglich GeoIP(PECL) will nicht laufen, man muss mit GeoIP(PHP) arbeiten.siehe oben.

(Die HE-eigene Piwik-Installation aus den Scriptpaketen habe ich nie getestet, da wohl recht alt.)

Der Thread heißt immer noch GeoIP (PECL) bei HE und darum gehts. Bitte auch meine obigen Beiträge lesen. HE bewegt sich jetzt und will zumindest für die Managed Server zeitnah Abhilfe schaffen. Für eine HE Webpack-Installation muss das nicht gelten.