ďťż
Podstrony
|
telcocafePrzeprowadzam 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 |
|||
Sitedesign by AltusUmbrae. |