[DEV] jQ User Map api3 v.0.0.1

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Steve Wuppertal
Mitglied
Beiträge: 200
Registriert: 09.05.2011 17:10
Wohnort: Wuppertal
Kontaktdaten:

Re: [DEV] jQ User Map api3 v.0.0.1

Beitrag von Steve Wuppertal »

Ok, habe mir jetzt den API-Key zugelegt und ihn in der entsprechenden Stelle in der user_map.html eingefügt.
Das scheint wohl soweit auch zu funktionieren, denn in der Google API Console erhöht sich der Counter bei jedem Abruf der Karte bzw. Aufruf der user_map.php aus dem Forum heraus.
Auch habe ich die Urls unter denen mein Forum erreichbar ist in der Referer Liste bei Google eingetragen...

Allerdings kann ich immer noch keine Einträge ändern bzw. neueinträge einfügen (bekomme immer noch wie gehabt den SQL-Fehler).
Werde dann morgen noch mal berichten (heute morgen, so ab 8 Uhr funktionierte das wieder....war wohl die Sperrfrist abgelaufen....leider wie geschrieben wohl ab 17 Uhr (oder auch schon früher) eben nicht mehr).
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: [DEV] jQ User Map api3 v.0.0.1

Beitrag von BNa »

Bitte daran denken, das Du den Code nicht zusätzlich (zB. in der overall_header.html), sondern als Ersatz des Originalcodes einfügst,
sonst werden beide Varianten, mit und ohne key gewertet, was google und Deine Kontingente durcheinanderbringt.

Daher

Öffne

styles/prosilver/template/user_map.html

Finde

Code: Alles auswählen

<!-- IF S_OVER_TRUE && (S_WEATHER || S_CLOUDS) -->
<script src="http://maps.google.com/maps/api/js?sensor=false&libraries=weather" type="text/javascript"></script>
<!-- ELSE -->
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
<!-- ENDIF -->
Ersetze mit

Code: Alles auswählen

<!-- IF S_OVER_TRUE && (S_WEATHER || S_CLOUDS) -->
<script src="http://maps.google.com/maps/api/js?key=YOUR_API_KEY&sensor=false&libraries=weather" type="text/javascript"></script>
<!-- ELSE -->
<script src="http://maps.google.com/maps/api/js?key=YOUR_API_KEY&sensor=false" type="text/javascript"></script>
<!-- ENDIF -->
YOUR_API_KEY mit Deinem key ersetzen.
Steve Wuppertal hat geschrieben:Werde dann morgen noch mal berichten (heute morgen, so ab 8 Uhr funktionierte das wieder....war wohl die Sperrfrist abgelaufen....leider wie geschrieben wohl ab 17 Uhr (oder auch schon früher) eben nicht mehr).
Das sollte sich morgen früh eigentlich genullt haben :wink:

Es kann sein, das Du das Folgende hier auch noch tun musst, bin mir aber nicht sicher.
Zumindest wird hier der Geoservice aufgerufen, beim Eintragen der User Location.
Auf jeden Fall mal testen, falls das Obige keine Besserung bringt (sollte aber).

Öffne

includes/functions_user_map.php

Finde > 2 mal

Code: Alles auswählen

$geo_map = file_get_contents('http://maps.google.com/maps/api/geocode/json?address=' . $profile_fields_town_map . '&sensor=false');
Ersetze > 2 mal

Code: Alles auswählen

$geo_map = file_get_contents('http://maps.google.com/maps/api/geocode/json?key=YOUR_API_KEY&address=' . $profile_fields_town_map . '&sensor=false');
YOUR_API_KEY mit Deinem key ersetzen.
Steve Wuppertal
Mitglied
Beiträge: 200
Registriert: 09.05.2011 17:10
Wohnort: Wuppertal
Kontaktdaten:

Re: [DEV] jQ User Map api3 v.0.0.1

Beitrag von Steve Wuppertal »

Danke für deine Ausführliche Anleitung dazu :)

Ich habe die erforderlichen Änderungen in den Dateien "user_map.html" und "functions_user_map.php" eingefügt.
Das aufrufen der Karte funktionier eigentlich immer problemlos !
Eine Fehlermeldung kommt wenn dann nur bei einem Eintrag bzw. einer Änderung...

Wie erwarte hat es heute morgen wieder funktioniert (so ab 8 Uhr).
Jetzt (15 Uhr) funktioniert es wieder nicht und ich bekomme die bekannte Fehlermeldung:
Allgemeiner Fehler
SQL ERROR [ mysqli ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' user_map_longitude = , user_map_location = '42107_Wuppertal' WHERE user_id = ' at line 2 [1064]

SQL

UPDATE phpbb_users SET user_map_latitude = , user_map_longitude = , user_map_location = '42107_Wuppertal' WHERE user_id = 2

BACKTRACE

FILE: [ROOT]/includes/db/mysqli.php
LINE: 182
CALL: dbal->sql_error()

FILE: [ROOT]/includes/functions_user_map.php
LINE: 177
CALL: dbal_mysqli->sql_query()

FILE: [ROOT]/includes/ucp/ucp_profile.php
LINE: 380
CALL: include('[ROOT]/includes/functions_user_map.php')

FILE: [ROOT]/includes/functions_module.php
LINE: 507
CALL: ucp_profile->main()

FILE: [ROOT]/ucp.php
LINE: 333
CALL: p_master->load_active()

Der Counter in der Google API-Konsole zählt fleißig hoch (Tages und gesamtzählung), da bin ich derzeit bei 15 für heute.....
Bedeutet, das er den API-Key erkennt und auswertet (zumindest beim aufrufen der Karte).
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: [DEV] jQ User Map api3 v.0.0.1

Beitrag von BNa »

Macht ihr da Masseneintragungen im UCP?

In der functions_user_map.php werden die Geocodingdaten abgefragt für die eingegebene Location, sowohl für das UCP als auch ACP.
Ist dein Limit erreicht, gibt es ein json > { "results" : [], "status" : "OVER_QUERY_LIMIT" } und die von Dir gepostete Fehlermeldung.

Lies mal: http://blog.programmableweb.com/2010/03 ... oding-api/
In lieu of the API key requirement, new geocoding request limits are also in effect, with a 2.500 daily request limit per IP address.
Deine Fehlermeldung betrifft also den Geocodingservice (http://maps.google.com/maps/api/[b]geocode[/b]/json), nicht den Maps Dienst. Unter normalen Umständen sollte das für ein 10.000+ Forum reichen, weil nach Murphy niemals alle gleichzeitig am eintragen sein sollten. Sowas macht man evtl. 1-2 mal und dann eine Weile nicht mehr. Ich denke, das wohl im Schnitt bei so einem Board, wenn die Map frisch eingerichtet ist, nichtmal 200-500 gleichzeitig am eintragen sind. Später warscheinlich noch weniger. Wie Du lesen kannst, wird hierbei tatsächlich die IP des Servers ausgewertet. Somit scheint auf Deinem shared Host wohl noch jemand anders den Geocodingservice rege zu nutzen. Und das lässt sich dann leider nicht mit einem api Key umgehen.
Google Says Goodbye to API Keys with New Geocoding API
Mein Tip daher: Ein globale Bekanntmachung, das die Leute für die Anfangszeit keine Spass- oder ständig wechselnde Eintragungen machen sollen, bis soweit alle eingetragen haben. Oder halt recht früh am Tage oder recht spät (nach 1:00 Uhr). Je nachdem. Später, also nach der Rush Phase, kann es dann wieder normal genutzt werden.

Hier das ganze nochmal auf Deutsch
Grenzen der Verwendung

Die Verwendung des Google Geocoding API unterliegt einem Abfragelimit von 2500 Geolokalisierungsanforderungen pro Tag. (Nutzer von Google Maps API Premier können maximal 100.000 Anforderungen pro Tag absetzen.) Dieses Limit besteht, um Missbrauch und/oder Zweckentfremdung des Geocoding API zu verhindern, und kann jederzeit ohne Vorankündigung geändert werden. Zusätzlich wird von uns ein Anforderungsratenlimit umgesetzt, um eine missbräuchliche Verwendung des Services zu verhindern. Falls Sie das 24-Stunden-Limit überschreiten oder den Service anderweitig missbräuchlich verwenden, kann das Geocoding API vorübergehend nicht mehr für Sie verfügbar sein. Wird dieses Limit weiterhin von Ihnen überschritten, kann Ihr Zugriff auf das Geocoding API gesperrt werden.

Hinweis:Das Geocoding API darf nur in Verbindung mit einer Google-Karte verwendet werden, d. h. die Anforderung von Geocodierungsergebnissen, die nicht auf einer Karte angezeigt werden, ist unzulässig. Alle Einzelheiten zur zulässigen Nutzung finden Sie im Abschnitt zu den Lizenzbeschränkungen in den Nutzungsbedingungen für das Maps API.
Also zusammengefasst:

Geocodeservice (Eintragen UCP und ACP) > 2.500 Anfragen Limit pro Tag (kein api Key benötigt)
Mapservice (Karte aufrufen und benutzen) > 25.000 Anfragen Limit pro Tag (api Key kann, muss aber nicht vorhanden sein)
Zuletzt geändert von BNa am 06.06.2012 21:48, insgesamt 1-mal geändert.
Steve Wuppertal
Mitglied
Beiträge: 200
Registriert: 09.05.2011 17:10
Wohnort: Wuppertal
Kontaktdaten:

Re: [DEV] jQ User Map api3 v.0.0.1

Beitrag von Steve Wuppertal »

Wie gesagt, von meinem Board aus kann diese massenhafte Nutzung nicht kommen...
Wenn ich die IP-Adresse des Forums auslese und dann nach allen URLs mit der gleichen IP suche, komme ich auf über 1200 ... :o
Wenn dann da nur einer bei ist, welcher ein Forum mit ner recht üppigen Mitgliederzahl betreibt und die gerade (seit einigen Tagen) alle einen Eintrag in so eine UserMap vornehmen möchten,...... :roll:
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: [DEV] jQ User Map api3 v.0.0.1

Beitrag von BNa »

Dumm, ja. Ist halt alles eine Frage des Anbieters. Bei den unseren Projekten existieren meist nur wenige oder single User auf dem Server, haben also eine exklusive IP. Da ich einer der Mitentwickler bin, hab ich mal den Spezies Bescheid gesagt. Die Lösung ist eine Splittung der Provider, da das Eintragen normalerweise ja viel weniger genutzt wird, als die Abrufe. Hierzu existiert schon eine Version mit einem alternativen Geocodedienst für solche Fälle (shared Host, überlaufene Server, etc.).

Also, die neue Version der functions_user_map.php hat hat für den Geocodeservice hierzu dann zwei weitere Dienste.

- Google Geocode api 3 (Bleibt bestehen)
- Open api - Mapquest Nominatim (Erste Alternative - Im Array sparsamer, nicht ganz so genau wie die Geovariante)
- Open api - Mapquest Geocode (Zweite Alternative - Mehr Array Output, etwas genau als Nomination)

Die Provider sind nach Bedarf in der config Datei einzustellen. Das einzige wäre, das bei openstreetmap die lat und lon Werte vom Google Geocode Verhalten etwas abweichen, da hier die Location anders eingetragen werden muss (wird anders gewichtet in der Verteilung der Angaben) zum Beispiel Land Landkreis Stadt gegenüber Stadt Land und so weiter. Also auf deutsch, der Dienst ist natürlich genau, die Location muss aber in einer anderen Reihenfolge eingetragen werden, um die exakt gleiche Stelle anzuzeigen. Bei google ist das ziemlich egal wie rum. Aber wen wunderts, ist ja ein Riesenverein.
Steve Wuppertal
Mitglied
Beiträge: 200
Registriert: 09.05.2011 17:10
Wohnort: Wuppertal
Kontaktdaten:

Re: [DEV] jQ User Map api3 v.0.0.1

Beitrag von Steve Wuppertal »

Top , danke dir für deine Mühen bzw. Hilfe :) !

PS: Das mit der Abweichung bzw. dem eintragen ist mir egal (bekomme ich bzw. meine User schon irgendwie hin :wink: ), hautpsache es funktionier wieder reibungslos.
Derzeit ist es etwas bescheiden, da bei jeder Profiländerung eines Users eben der SQL-Fehler ausgegeben wird (selbst wenn er nichts an der UserMap Adresse geändert hat).
Die Profileinträge werden ja trotzdem geändert, nur kommt eben der Fehler wegen des Geo-Eintrages...
Evtl. wäre es ja auch eine Lösung, wenn bei einer erfolglosen Geo-Abfrage (eben durch eine abweisung wegen überschreitung des Limits) der SQL-Fehler unterdrückt wird und als Ausgabe "UserMap Eintragung nicht erfolgreich bzw. möglich" angezeigt wird.

PS: Freue mich jetzt schon mal auf die "neue" funktions_user_map.php :grin: :)
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: [DEV] jQ User Map api3 v.0.0.1

Beitrag von BNa »

Danke für das Feedback.
Steve Wuppertal hat geschrieben:Die Profileinträge werden ja trotzdem geändert, nur kommt eben der Fehler wegen des Geo-Eintrages
Bingo, zwar kein echten Bug aber damit hast Du einen Funktionsfehler entdeckt. Der Geocodeservice wurde auch genutzt, wenn keine Location geändert wurde, sprich, bei jeder noch so kleinen Änderung unter UCP -> Profile wurde der Geocodeservice aufgerufen. Danke nochmal, dann haben wir gleich noch einen anderen oder sogar den Hauptgrund gefunden. Damit (wenn Deine Entdeckung ursächlich war) haben wir in der neuen Version zusätzlich zum fixen der hohen, vorher unerklärlichen Anzahl von Requests gleich noch eine Ausfallsicherung durch die anderen Provider, genial.

Edit: Der Fix ist fertig. Noch ein paar Tests, dann send ich Dir den Fix per PN.
Teste das dann mal ein paar Tage und gib Feedback, dann gibt es eine v.0.0.3.
P.S. Du meintest wohl v.0.0.2 in Deinem Beitragstitel?
Steve Wuppertal
Mitglied
Beiträge: 200
Registriert: 09.05.2011 17:10
Wohnort: Wuppertal
Kontaktdaten:

Re: [DEV] jQ User Map api3 v.0.0.1

Beitrag von Steve Wuppertal »

Zuerst 0.0.1 ....dann habe ich das Update auf 0.0.2 entdeckt (nach meinem ersten Posting) und entsprechend eingespielt :wink:
Aktuell läuft bei mir im Forum also 0.0.2
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: [DEV] jQ User Map api3 v.0.0.1

Beitrag von BNa »

Die v.0.0.3 ist erschienen.
Antworten

Zurück zu „[3.0.x] Mod Support“