I hvilke situasjoner er det bedre å bruke json_encode () enn å bruke serialize ()?

stemmer
27

Det er omtrent alt jeg trenger å spørre. Sjekket PHP manualen og så en bruker innlegg sier at serialize er 45-90% lavere enn json_encode (han kjørte noen benchmarks). Men hvordan slow er treg? Jeg kan finne en masse versus ting viltvoksende rundt, men ingen av dem en nybegynner som meg kan forholde seg til.

Jeg skrev et script som kodet en rekke i JSON og en annen til å dekode det. Jeg gjorde samme med serialize. Obviuously som ikke vil fortelle meg noen vesentlige forskjeller mellom dem.

Publisert på 21/09/2009 klokken 01:50
bruker
På andre språk...                            


3 svar

stemmer
3

Gjør som 10.000 ganger (hver) til (forhåpentligvis) får en målbar ideen om forskjeller i både minnebruk og CPU tid.

Stort sett forskjellen vil ikke være vesentlig i forhold til ytelse. Ved hjelp av JSON er nyttig i to spesielle tilfeller: for å returnere til en nettleser og for interoperabilitet med andre programmer (via webtjenester og andre midler), spesielt de på ikke-PHP plattformer.

Svarte 21/09/2009 kl. 01:55
kilden bruker

stemmer
1

Hvis du skal overføre data mellom en applikasjon og en annen, er det vanligvis nesten alltid bedre å bruke JSON kodede data i stedet for PHP serie data som senere er et format for PHP og ikke like bærbar som JSON.

Selv i en situasjon der både server og klient er både PHP-basert, det sømmer seg å bruke en bærbar format som JSON å tillate etablering av nye kunder i fremtiden uten å måtte endre responsen format fra serveren.

Jeg har ikke gjort noen benchmarking av disse to selv, men hvis du opplever at JSON-koding er raskere enn serie, enn alle de mer grunn til å bruke den.

Dessuten foretrekker jeg JSON kodet data som det er lettere å lese enn seriedata og kan raskt bli kastet inn i Firebug å bli visualisert.

Svarte 21/09/2009 kl. 02:05
kilden bruker

stemmer
2

Når du bare koder / serial et par av objekter / array, vil jeg si at forskjellen i hastighet vil ikke være så viktig: du genherally ikke vil oppfatte det.

Forskjellen er at serialize er laget spesielt for PHP; for eksempel, er informasjonen som sur klasser ikke tapt med serialize, og kan hentes når unserializing.

På den annen side, er JSON ikke spesifikt for PHP, som betyr at det er en god utvekslingsformatet - dens primære bruk er å utveksle data mellom Javascript og PHP.


For eksempel vurdere denne delen av koden:

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

$test = new A(10);

Nå, la oss serial og unserialize $ test:

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

Vi får :

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

dvs. en gjenstand, forekomst av klasse A.


Nå, la oss gjøre det samme med JSON:

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

Vi nå bare har en forekomst av stdClass:

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

JSON er hyggelig å utveksle data (den 'klasse A' nformasjon er viktig for PHP, men sannsynligvis har ikke mye sans for et annet program); men har sine begrensninger også.

Svarte 21/09/2009 kl. 02:07
kilden bruker

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