ďťż

[PHP] Zapis serialize() do komórki Długie ciągi znaków w kluczu?

       

Podstrony


telcocafe

Przeprowadzam zmiany w module sondy. Odpowiedzi (opcje ankiety) będą
zapisane po użyciu serialize() w 1 komórce tabeli bazy danych
(ostatecznie w 2). Do dyspozycji mam:
- kolejność odpowiedzi (opcji ankiety)
- jej wartość
- ilość głosów na daną opcję

Jak powinienem to poprawnie zapisać w tablicy (najlepiej w 1, maks.
2)? Jeżeli nazwę opcji ankiety zapiszę jako klucz, a ilość głosów -
jako wartość (np. 'Powyżej 50'=>5), może to spowolnić skrypt?

Ważne, by rozwiązanie było szybkie i nie trzeba było dodatkowo
odczytywać odpowiedzi z innej tabeli (jak wcześniej).

PS. Czy szybsze będzie jednak dodatkowe zapytanie do bazy danych w celu pobrania odpowiedzi (każda zapisana w osobnym rekordzie)?
Użytkownik Ferrari edytował ten post 20 maj 2007, 18:19


bedzie ok :)

Używam PHP5 na Windows XP i funkcje serialize() oraz unserialize() zdają mi się być dość szybkie (głównie ta druga). Nie wiem, jak w PHP4. Odczyt z dodatkowej tabeli zajmie raczej więcej czasu, szczególnie na niektórych serwerach. Używam MySQL 4 (może wersja 5 jest bardziej zoptymalizowana).

Po kilku wywołaniach:
$t=microtime(); $odpowiedzi=array('Nie wiem, jakaś tam odpowiedź'=>9999999999999,'Co innego, wybierz'=>872974,'A teraz jeszcze inna odpowiedź'=>65465787,'Co tak wolno?'=>79787987,'Kolejny'=>44,'Co to jest bo nie wiem'=>848484,'Inna odpowiedź...:) Haha !!! '=>4545,'No i ostatnia'=>0,'Jeszcze jedna odpowiedź'=>1); echo microtime()-$t; echo '<br />'; $t=microtime(); $abc=serialize($odpowiedzi); echo microtime()-$t; echo '<br />'; $t=microtime(); $def=unserialize($abc); echo microtime()-$t;
W sekundach: 7.8E-005 | 0.000138 | 9.5E-005
W milisekundach: 0.08 | 0.122 | 0.095

Serialize() i Unserialize() 100 razy (kilka wywołań):
W sekundach: 0.006965 : 0.004791 || 0.00667 : 0.005171
W milisekundach: 7.126 | 4.835

Ewentualnie mogę pomyśleć nad własnym zapisem w komórce tabeli polls. Mało kto będzie umieszczał 30 odpowiedzi w sondzie - a gdyby nawet, w tabeli answers przy 10 takich sondach byłoby już 300 rekordów! Wyciągnięcie danych za 1 zapytaniem z obydwóch tabel zaś nie jest łatwe. Co wy jednak o tym myślicie?
Użytkownik Ferrari edytował ten post 21 maj 2007, 16:01
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.