Antworten auf deine Fragen:
Neues Thema erstellen

unserialize(): Notice abfangen und zustellen ...

Curanai

Aktives Mitglied

Hallo PSD'ler und PHP-Gurus darin,

ich verwende serialize() auf einem utf-8 Textfeld in einer Datenbank (um ein Array dort abzulegen). Ja, mir ist die Problematik in Bezug auf "multibyte" und das später erforderliche unserialize() bekannt und dafür habe ich eine simple, aber super effektive, Maßnahme ergriffen.

Gestern bekam ich erstmals eine Notice in meiner Entwicklungsumgebung: "Error at offset 330 of 745 bytes" - auf Zeile 760.

Dort steckt mein mb_unserialize() (eigene Funktion für "multibyte") - aber die ist nicht falsch, verändert o. ä. Diese wird projektweit verwendet und läuft 1A.

Also ist im offset 330 was "komisch", wo die Funktion wohl stolpert - so, jetzt die Gretchenfrage: ...

Ich finde im Netz Tonnen zu "undefined offset", aber wie kann ich stilvoll meine Funktion dahingehend erweitern, dass mir im Falle eines solchen erneuten Auftretens (kommt nämlich nicht immer) der String, welcher da unserialise()'d werden soll, zugeschickt wird?

Ich dachte an ein try-catch-Gebilde, will aber nicht unnötig "Perlen (Performance) vor die Säue" werfen, da diese eigene Funktion stark frequentiert wird (Einschränkung auf Entwicklungsumgebung natürlich möglich).

In den üblichen Logs steht die gleiche Meldung nur nochmals ... leider nicht so umfangreich wie gewünscht.

Gäbe es noch eine andere Möglichkeit oder ist es viel einfacher??

Denn: Den "String" brauche ich deshalb, da dort Wort- und Satzgeflechte zusammengesetzt werden - im Baukastenstil. Sehe ich den String, weiß ich, wo ich in den 25.000 Zeilen suchen bzw. ansetzen muss. Das Array ist also nicht das Problem, sondern der Value dahinter (ich tippe auf was Unmaskiertes, aber die Content-Geflechte sind alle richtig [da schon geprüft]) ...

Vielen Dank für alle Denkanstöße.
 

Duddle

Posting-Frequenz: 14µHz

AW: unserialize(): Notice abfangen und zustellen ...

Ich dachte an ein try-catch-Gebilde, will aber nicht unnötig "Perlen (Performance) vor die Säue" werfen, da diese eigene Funktion stark frequentiert wird

Eine simple Messung zeigt:

With 1000000 runs on my WinXP box run apache and PHP 5.2.6:

no except with no surrounding try = 3.3296
no except with surrounding try = 3.4246
except with no surrounding try = 3.2548
except with surrounding try = 3.2913
Die Ergebnisse der Messung kann ich bestätigen. Solange keine Exceptions geworfen werden, leidet die Performance nicht.


Duddle
 

Curanai

Aktives Mitglied

AW: unserialize(): Notice abfangen und zustellen ...

Okay, das mildert meine Bedenken - danke Dir, Duddle ... werde dann gleich einem Prototypen Leben einhauchen.
 

Curanai

Aktives Mitglied

AW: unserialize(): Notice abfangen und zustellen ...

Nein, vielen Dank - um die Funktion geht es nicht, nur um das, was die Funktion bei "Notice" gerade bearbeitet, damit ich das besser lokalisieren kann - thx anyway.
 

Curanai

Aktives Mitglied

AW: unserialize(): Notice abfangen und zustellen ...

Schnell noch nachgereicht - quasi der Vollständigkeithalber:

Das besagte Verhalten wurde nicht immer produziert. Beteiligt war hierbei aber immer Content aus der Datenbank - und in Verbindung mit serialize/unserialize ist es bei utf-8 bekannt anfällig.

Meine Lösung:
- Speichern der Daten mittels base64_encode( serialize($array) );
- Herstellen des Arrays mit unserialize( base64_decode($feld_aus_db) );

Danach war ohne weitere Änderungen alles wieder gewohnt stabil.

Interessant war einzig, dass eigentlich darin nichts verwendet wurde, was jetzt enorm mit utf-8 zu tun hatte ... es waren eigentlich nur Zahlen und Kurzstrings (bspw. "p[Nummer]").

Grüße vom Kaffeebecherrand.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.614
Beiträge
1.538.351
Mitglieder
67.525
Neuestes Mitglied
mgtaucher
Oben