Rolf B: Cleverreach API - Anfänger braucht Hilfe

Beitrag lesen

Hallo Bruzzler,

die Moderatoren-Meldung ist von mir - ich hoffe ein Admin findet das schnell. Persönliche Anmeldedaten gehören nicht in ein Forum. Du solltest dein Kennwort möglichst schnell ändern.

Wobei Du GENAU nicht weiterkommst, müsstest Du vielleicht mal genauer sagen. Was ich in deinem Code sehe, ist der Login, ordentlich mit try/catch gekapselt, und ein erster GET Versuch.

Danach schaltest Du aber um und machst eine direkte Datenbankabfrage. Die hat dann mit cleverreach wohl nichts zu tun, oder?

Was die 50 angeht - schau mal hier. Die 50 dürfte der Default für die Pagesize sein. Du kannst eine höhere Pagesize mitgeben, das hilft Dir aber irgendwann auch nicht mehr, und du musst Folgeaufrufe machen. D.h. den ersten Aufruf machst Du mit page=0. Solange wie Du soviele Receiver bekommst wie die Pagesize beträgt, machst Du einen weiteren Aufruf mit der nächsthöheren Page-Nummer.

Diese paged-reads haben für Batch-Läufe den Nachteil, dass sie nicht transaktional sind. D.h. wenn Du die Seiten 0 und 1 gelesen hast, und sich dann ein User registriert der auf Seite 0 gehört, verschiebt sich alles und auf Seite 2 bekommst Du als erstes den User, den Du zuvor noch auf Seite 1 hattest. Schlimmer noch: Du hast Seite 0 und 1 gelesen und nun löscht sich jemand auf Seite 0. Danach liest Du Seite 2. Durch die Löschung ist der User, der vorher als erstes auf Seite 2 erschienen wäre, der letzte User auf Seite 1, und du bekommst ihn gar nicht geliefert.

Mit diesen Ungenauigkeiten musst Du leben, bzw. darfst während eines Batch-Laufs die Gruppe nicht ändern.

Zu der DB-Abfrage: Wenn Du gerade erst mit PHP anfängst, dann lass mysql gleich liegen. Diese Schnittstelle ist nicht mehr aktuell und funktioniert ab PHP 7 gar nicht mehr. Sie ist durch mysqli ersetzt worden; das bietet bessere Möglichkeiten und hat ein paar gefährliche Löcher nicht mehr. Noch besser wäre, wenn Du gleich mit PDO einsteigst.

Dann noch ein kleiner, beiläufiger Hinweis: Wenn Du namespace-gebundene PHP-Elemente ansprichst (new CR\tools\rest(...)), dann setze immer ein \ ganz nach vorn. Die Angabe CR\tools geht vom aktuellen Namespace aus. Du hast keinen eigenen gesetzt, deswegen ist das der globale Namespace und es funktioniert. Aber wenn Du deinen Code in eigenen Namespaces zu sortieren beginnst, klappt das nicht mehr. Deswegen ist `\CR\tools' besser. Die Ausnahme sind Elemente des globalen Namespace (die ganzen klassischen Library-Funktionen von PHP, aber auch Klassen wie Exception), die sucht er im globalen Namespace wenn er sie im aktiven Namespace nicht funden, weil sonst wohl zuviel alter Code kaputt gegangen wäre. D.h. vor CR\tools gehört ein Backslash davor, vor Exception braucht keiner.

Rolf

--
sumpsi - posui - clusi