2010-01-19 8 views
17

Muszę przesłać dużą tablicę z jednego serwera do drugiego za pomocą pliku. Jest to wielowymiarowa, ale dość prosta tablica. Teraz szukam najbardziej efektywnego sposobu, aby ten plik znalazł się w mojej aplikacji na drugim serwerze. Pytanie to dotyczy części file-> array, a nie części array-> file na pierwszym serwerze.PHP: Array jako var_export/include vs. (un) serialize vs. json_ (en | de) kod

Oczywiście zrobiłem kilka benchmarków na 3 alternatywach, które wydawały się najbardziej obiecujące. Mój pełny dane odniesienia:

czas:

  • obejmują: 0,338 ...
  • unserialize: 0,180 ...
  • json_decode: 0,134 ...

szczyt użycie pamięci:

  • obejmują: 384374,64
  • unserialize: 201377,28
  • json_decode: 219528,08

rozmiar pliku:

  • obejmują: 3135 kB
  • unserialize: 3142 kB
  • json_decode: 1838 kB

Myślę, że json_decode jest drogą do zrobienia, ponieważ wykorzystanie pamięci szczytowej jest moim najmniejszym problemem i nawet json jest całkiem niezły. Ale szybkość i rozmiar pliku jsona są po prostu skaleczone. Nigdy bym nie pomyślał, że to tak szybko.

Wszelkie zastrzeżenia lub inne sugestie?

+0

Wydaje się, że znalazłem siebie rozwiązanie. Teraz wystarczy wykonać (i używać JSON). :) – jensgram

+3

+1 - Wspaniale, że wykonałeś całą tę pracę zanim tu przyszedłeś i zadałeś pytanie. Większość nie poszedłaby na trud. –

+1

Z pewnością metoda include powinna być najszybsza, ponieważ jest to już kod php? Czy czegoś brakuje? – aland

Odpowiedz

2

Kudos Janowi dla 1) faktycznie wypróbowanie różnych metod 2) dzielenie wyniki

Jakiś czas temu byłem w pracy w systemie AI whwew Baza wiedzy był przechowywany w dużej tablicy. Zauważyłem, że jest to rząd wielkości szybszy, aby odbudować całą tablicę z rekordów bazy danych (lokalny mysql, około 30 000 wierszy), zamiast odserializować tablicę z pliku.

(Oznaczało to również, że mogłem później zmienić kod, aby tylko selektywnie ładować odpowiednie części drzewa wiedzy, co przyspieszyło jego działanie jeszcze bardziej).

HTH

C.