die zurückzugebenden Daten eines IO können - wie ich gerade beim ‚Amazon Echo Remote‘ Modul feststellen musste - schon mal etwas größer sein. Auf eine Abfrage liefert Amazon mehr als 1 MB Daten zurück.:o
Wenn die Daten über SendDataToParent weitergegeben werden sollen, kommt es zu dem oben genannten Fehler.
Gibt es da schon Beispiele, wie man damit umgehen sollte?
Output Buffer meint aber meisten die Ausgabe (Fehler, Echo, var_dump etc…) von PHP an den Aufrufer.
Das Limit ist beabsichtigt.
Sicher das es keine Ausgabe ist, sondern der Datenaustausch?
Michael
Du sendest an den Parent.
Ist das auch ein PHP-Modul?
Wenn diese Instanz wiederum einen Fehler auswirft (in ForwardData und folgenden Methoden) dann ist dies deine Ursache.
Kannst du einfach testen, indem du eventuelle Fehler unterdrückst
Wenn dann diese Meldung nicht mehr erscheint, dann ist deine Fehlerbehandlung im Parent magelhaft.
BTW: Was haben denn an der Stelle die empfangen Daten von Amazon damit zu tun? Die wären ja im ReceiveData zu finden und nicht im ForwardData welche du versendet.
Michael
Es gibt ein hartes Limit von 1MB beim Output/Verarbeiten von PHP Daten (Egal ob Skript oder Datenfluss). Kannst du das nicht irgendwie umgehen im Amazon Modul?
Ja, der Parent ist auch ein PHP -Modul.
Wenn ich die Fehlerunterdrückung einbaue, dann liefert SendDataToParent false zurück.
Die letzte Anweisung vor dem Return des ForwardData im Parent schreibt noch die zurückzugebenden Daten in den Debug (und das sind mehr als 1MB). Da ist noch alles OK. Es geht also um den Transfer zurück zum Child. Bei dem müssen mehr als 1 MB ‚transportiert‘ werden.
Konntest du auch nicht, da es die entsprechende public Methode noch nicht gibt
Ich möchte das Thema aber gerne noch einmal hochholen, da ich gerne eine Methode zum holen der ‚prime-sections‘ (Radiosender, Genres etc) von Amazon Prime anbieten würde.
Hat jemand eine Idee, wie ich die große Datenmenge ‚elegant‘ durch das Nadelöhr oder an ihm vorbei bekomme? Wäre da wirklich dankbar.
Ich könnte das harte Limit über einen Spezialschalter änderbar machen - was aber trotzdem erfordern würde, dass der User dies anpasst. Und natürlich ggf. bei einem echten Problem den RAM sehr unnötig belastet. Man könnte das Paket aufteilen - aber dann wäre gleich die Frage wo du die Teile speicherst. Bei String Variablen hast du ebenfalls das 1MB Limit und der InstanceBuffer hat 8kb als Limit. Auf der Festplatte speichern ist wegen der bekannten SD-Karten Problematik auch nicht so gut.
Ich habe mich jetzt entschieden, die Funktion mit Filtermöglichkeiten auszustatten. Solange man die Filter nutzt bleibt man nun unter dem Limit
Mal schauen, was in der Praxis daraus wird…
Es ist natürlich schöner, wenn man ohne Spezialschalter auskommt.
Es fehlt aber noch eine Fehlerbehandlung. Daher meine abschließende Frage: wie prüfe ich am besten auf das Limit? Meine Versuche mit strlen schlagen viel zu spät an…
Oder sollte ich besser ein Exception Handling einbauen? Da bräuchte ich aber auch einen Tipp.