In quali scenari è meglio usare json_encode () che usare serialize ()?

voti
27

Questo è tutto ho bisogno di chiedere. Controllato il manuale di PHP e vide un post utente dicendo che serializzare è 45-90% più lento di json_encode (correva alcuni parametri di riferimento). Ma come lento è lento? Posso trovare un sacco di contro roba tentacolare in giro, ma nessuno dei quali un principiante come me può riguardare.

Ho appena scritto uno script che codificato un array in JSON e un altro per decodificarlo. Ho fatto lo stesso con serialize. Obviuously che non mi dirà differenze significative tra di loro.

È pubblicato 21/09/2009 alle 02:50
dall'utente
In altre lingue...                            


3 risposte

voti
3

Farlo 10.000 volte (ciascuno) a (si spera) avere un'idea misurabile di differenze sia l'utilizzo della memoria e tempo di CPU.

Per lo più la differenza non sarà significativo in termini di prestazioni. Utilizzando JSON è utile in due circostanze particolari: per tornare a un browser Web e per l'interoperabilità con altre applicazioni (tramite i servizi Web e altri mezzi), in particolare quelli su piattaforme non-PHP.

Risposto il 21/09/2009 a 02:55
fonte dall'utente

voti
1

Se stai trasferimento di dati tra un'applicazione e l'altra, di solito è quasi sempre meglio usare JSON con codifica dei dati, piuttosto che serializzati PHP dati come il secondo è un formato specifico per PHP e non come portatile come JSON.

Anche in una situazione in cui sia il server e client sono entrambi-php base, si conviene di utilizzare un formato portatile come JSON per consentire la creazione di nuovi clienti in futuro senza dover cambiare formato di risposta dal server.

Non ho fatto alcuna analisi comparativa di questi due me stesso, ma se si sta trovando che la codifica JSON è più veloce di serializzazione, che a maggior ragione per usarlo.

Inoltre, preferisco JSON dati codificati come è più facile da leggere rispetto a dati serializzati e può essere rapidamente gettato in Firebug da visualizzare.

Risposto il 21/09/2009 a 03:05
fonte dall'utente

voti
2

Quando si codifica solo / serializzare un paio di oggetti / array, direi che la differenza di velocità non sarà così importante: si genherally non percepirlo.

La differenza è che serializzare è fatto soprattutto per PHP; per esempio, informazioni sur le classi non si perdono con serialize, e può essere recuperato quando deserializzazione.

D'altra parte, JSON non è specifico per PHP, che significa che è un buon formato di interscambio - il suo uso primario di scambio di dati tra JavaScript e PHP.


Ad esempio, si consideri questo pezzo di codice:

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

$test = new A(10);

Ora, cerchiamo di serializzare e $ test unserialize:

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

Noi abbiamo :

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

Per esempio, un oggetto, un'istanza di classe A.


Ora, cerchiamo di fare lo stesso con JSON:

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

Ora abbiamo solo un'istanza di stdClass:

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

JSON è bello per lo scambio di dati (il nformazioni 'Classe A' è importante per PHP, ma probabilmente non ha molto senso per un'altra applicazione); ma ha i suoi limiti troppo.

Risposto il 21/09/2009 a 03:07
fonte dall'utente

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