![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 2.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie.
Pisze pracę - bilingi w php. No i napotkałem taki mały problem. Mam tabelę w MySQL: ===================== |id | kod | wartosc | ===================== |1 |10 | Połączenie | |2 |25 | SMS | |3 |75 | Roaming | itd..... następnie wybieram wszystko i wyświetlam
Więc mam całą tebelę z MySQL w zmiennej $row. W tym momencie pojawia mi się problem. Chciałbym aby jakaś funkcja po podaniu jej wartości np.10 zwróciła mi wartość Połączenie z tabeli $row analogicznie, po podaniu jej 25 ma zwrócić SMS 75 => Roaming... itd... Wiem też jak zrobić to od topora, wstawić funkcję while lub for... ale to ma być bardzo zoptymalizowany kod ponieważ będzie wykonywany dla około 17tyś rekordów. Dziękuję |
|
|
![]()
Post
#2
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
jeśli ma być szybki to przerzuć to polecenie na serwer MySQL'a.
w zmiennej $kod trzymasz ten kod 10, 25 czy 75 ale nie wiem czy dobrze zrozumiałem. Ten post edytował piotrooo89 4.01.2009, 17:27:17 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 2.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
też o tym myślałem, ale za każdym razem będę musiał pytać bazę... ponad 17tyś. wierszy :/
może istnieje taka funkcja.. a my o niej nie wiemy |
|
|
![]()
Post
#4
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
lepiej zapytać 17k razy bazę mysql niż na paser php który przy takiej ilości danych może troszkę zgłupieć.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Możesz to trochę zoptymalizować zapisując wybrane już sety kod => wartosc do tablicy i później przed każdym zapytaniem sprawdzić czy taki set został już zapisany, jeśli tak to bierzesz z tablicy jeśli nie to wykonujesz zapytanie i dodajesz do tablicy.
edit: Btw. 17k to wcale nie jest tak strasznie dużo, w sumie mógłbyś na początku jednym zapytaniem wczytać wszystkie dane do tablicy i potem je z niej wyciągać zamiast wykonywać x zapytań. Zobacz które rozwiązanie jest optymalniejsze. Ten post edytował krowal 4.01.2009, 17:58:39 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 2.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jednak jest sposób bardzo prosty, już wam go przedstawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
//PS. Sam doszedłem do tego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#7
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
edit: Btw. 17k to wcale nie jest tak strasznie dużo, w sumie mógłbyś na początku jednym zapytaniem wczytać wszystkie dane do tablicy i potem je z niej wyciągać zamiast wykonywać x zapytań. Zobacz które rozwiązanie jest optymalniejsze. ja tu bym wogóle zrezygnował z php z wyjątkiem tej zmiennej w której trzymałbym ten kod. a i zgadzam się ze 17k rekordów to nie jest jakieś wielkie obciążenie. no chyba że mówimy o sytuacji w której tworzysz ekstremalnie nieoptymalne zapytania do bazy. ale to nawet baza z 1k rekordow będzie kuleć. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 25 Dołączył: 4.07.2007 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Z wczytywaniem danych do tablicy to bym uważał. Kiedyś jak zaczynałem to wczytywałem do tablicy wszystkie dane około 1k userów. Oczywiście serwer siadał bo RAM się zapychał
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zależy jaki serwer, jakie dane i jaki limit pamięci ustawiony w php.ini (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) W tym przypadku to chyba nie będzie strasznie dużo. Przyjmując nawet najbardziej pesymistyczną wersję, że każdy message będzie miał 1000 znaków (~1KB) to przy 17k rekordów tablica będzie miała jakieś 17-18MB. Jednak jak widać w przykładzie od @wasnia te wiadomości są raczej krótkie, przyjmijmy ze średnio 80 znaków (co i tak jest pewnie zbyt dużą liczbą), wówczas tablica zajmie w pamięci ok 1,5MB więc chyba nie ma się czym martwić (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 2.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Panowie, troszkę wam sprostuje moją sytuacje z tą tablicą.
Wyobraźcie sobie że jest plik bilingowy z 17k połączeń. Każdy typ połączenia jest oznaczony kodem (przyjmijmy: 10 - Połączenie krajowe, 25- SMS, 75-Połączenie wychodzące w Roamingu, itd.). Mamy 15k połączeń typu 10 - Połączenie krajowe. 1k połączeń typu 25 - SMS 1k połączeń typu 75 - Roaming... I teraz tak rozwiązałem to, że aby zamienić 'typ połączenia' na 'oznaczenie słowne połączenia' wystarczy odwołać się do tej mojej skromnej tablicy w pamięci, która zostaje wczytana tylko raz przed użyciem pętli i po wszystkim. I mam rozkodowany typ połączenia i wszyscy wiedzą jaki to był typ połączenia. A sposobem @piotrooo89 musiłbym odwoływać się tyle razy do bazy, ile mam połączeń. Myślę, że to już jest bardzo optymalny kod. Ten post edytował wasnia 5.01.2009, 20:57:18 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 01:32 |