In welchen Szenarien ist es besser, zu verwenden json_encode () als serialize () zu verwenden?

stimmen
27

Das ist alles, was ich fragen müssen. Überprüft das PHP-Manual und sah (lief er einige Benchmarks) ein Benutzer Post, dass serialize ist 45-90% langsamer als json_encode sagen. Aber wie „langsam“ ist zu langsam? Ich kann eine Menge „versus“ Sachen finden weitläufige herum, aber keiner von denen ein Anfänger wie ich kann beziehen sich auf.

Ich schrieb ein Skript, das ein Array in json und einen anderen, sie zu entschlüsseln codierte. Ich habe gleiche mit serialize. Obviuously das wird mir sagen, keine signifikanten Unterschiede zwischen ihnen.

Veröffentlicht am 21/09/2009 um 02:50
vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
3

Tun Sie das 10.000-mal (jeweils) zu (hoffentlich) sowohl eine messbare Idee von Unterschieden in Zeitspeicherauslastung und CPU.

Meist wird nicht der Unterschied in Bezug auf die Leistung erheblich sein. JSON ist hilfreich, in zwei besonderen Umständen: zu einem Web-Browser zurückkehren und für die Interoperabilität mit anderen Anwendungen (über Web-Service und andere Mittel), insbesondere solche auf Nicht-PHP-Plattformen.

Beantwortet am 21/09/2009 um 02:55
quelle vom benutzer

stimmen
1

Wenn Sie Daten zwischen einer Anwendung sind die Übertragung und eine andere, dann ist es in der Regel fast immer besser zu verwenden JSON codierte Daten anstatt PHP serialisierten Daten wie das später ist ein Format spezifisch für PHP und nicht so portabel wie JSON.

Selbst in einer Situation, in der sowohl der Server als auch Client sowohl PHP-basiert ist, obliegt es Ihnen, ein tragbares Format wie JSON zu verwenden, um die Schaffung neuer Kunden in Zukunft zu ermöglichen, ohne Antwortformat von dem Server zu ändern.

Ich habe kein Benchmarking dieser beide selbst getan, aber wenn Sie, dass json Codierung sind zu finden, ist schneller als die Serialisierung, als umso mehr Grund, es zu benutzen.

Auch ziehe ich JSON-Daten codiert, wie es einfacher ist, als serialisierten Daten zu lesen und kann schnell in Firebug geworfen werden sichtbar gemacht werden.

Beantwortet am 21/09/2009 um 03:05
quelle vom benutzer

stimmen
2

Wenn Sie nur codieren / ein paar Objekte / Array serialisiert, würde ich sagen, dass der Unterschied in der Geschwindigkeit nicht so wichtig sein wird: genherally Sie werden es nicht wahrnehmen.

Der Unterschied besteht darin, dass serialize ist speziell für PHP; zum Beispiel sind nicht mit serialize, verlorene Information sur als Klassen und können abgerufen werden, wenn das deserialisieren.

Auf der anderen Seite, ist JSON PHP nicht spezifisch, was bedeutet, es ist eine gute Austauschformat ist - seine primäre Verwendung von Daten zwischen Javascript und PHP auszutauschen ist.


Betrachten wir zum Beispiel dieses Stück Code:

class A {
    public $a;
    public function __construct($a) {
        $this->a = $a;
    }
}

$test = new A(10);

Nun lassen Sie uns serialisiert und unserialize $ test:

var_dump(unserialize(serialize($test)));

Wir bekommen :

object(A)[2]
  public 'a' => int 10

das heißt, ein Objekt, beispielsweise der Klasse A.


Nun lassen Sie uns mit JSON das Gleiche tun:

var_dump(json_decode(json_encode($test)));

Wir haben jetzt nur eine Instanz von stdClass:

object(stdClass)[2]
  public 'a' => int 10

JSON ist schön, Daten auszutauschen (die nformation ist ‚Klasse A‘ wichtig für PHP, aber wahrscheinlich nicht für eine andere Anwendung viel Sinn hat); hat aber seine Grenzen zu.

Beantwortet am 21/09/2009 um 03:07
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more