Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd w php?
Forum PHP.pl > Inne > Hydepark
varez
Opisze Wam jak to dzis odnalazłem prawdopodobnie buga w php, i niech mi ktos powie czy to jest mozliwe, gdyz myslalem ze php jest tak napisane, ze cos takiego sie nie powinno zdarzyc.

Otóż wybierałem sobie z bazy sporą liczbe rekordów (6 000 + ich pasujace odpowiedniki z innej tabeli, czyli razem cos jakbym mial tablice 6000 x 20 elementów, gdzie nie bylo wiekszej kolumny od VARCHAR 255), i potem mialem je wyświetlic w polu <SELECT>.
jako ze kiedystam zmienialem sposob wybierania rekordow, to zostaly mi w skrypcie zle "odwolania" do elementow tablicy.
i tak zamiast $dane['nazwa_firmy'] wybieralem cos w rodzaju $dane['firmy']['nazwa_firmy'].

kod byl mniej wiecej taki:

Kod
foreach ($tablica as $dane) {
   $tekst.='<option value="'.$dane['id'].'">'.$dane['firmy']['nazwa_firmy'].'</option>';
}

echo $tekst;

Zgodnie z logika spodziewalem sie pustych <option>-ów, i po czesci tak wlasnie bylo, ale do pewnego momentu:
Kod
<option value="4312"></option><option value="4313"></option><option value="4314"></op="3316"></option><option value="3317"></option><option value="3318"></option>
po chwili numerki leciały juz dalej
<option value="4316"></option>

itd..
ale przy ktoryms zamknieciu znowu wygladalo to tak:
Kod
</op="3316"></option>

(znowu dokleił sie znikad ten sam kawałek kodu)
potem jeszcze kolejny raz,
za to w innym miejscu pojawiło mi się

Kod
</op<!DOCTYPE html PUBLIC ..... i cała reszta początku strony


Strone buforuje przed wyswietleniem, podejrzewam ze stamtad pobralo mi ten kawalek i wepchalo go gdzies posrodku zmiennej $tekst.
Zmienna $dane podejrzewam ze miala ok 6MB, wygenerowana tresc (HTML w buforze) mial ok 10MB, zmienna $tekst ok 8-9MB. w php.ini limit pamieci 128MB albo 64MB.

Spotkał sie ktos z czyms takim? Zeby wybierało cuda z pamieci przy odwolywaniu sie do nieistniejacej zmiennej?

batman
To nie jest błąd PHP, tylko przeglądarki/html-a. Miałem podobne problemy, gdy pakowałem do elementu select listę kilkudziesięciu tysięcy miast.
varez
eee.. czyli ze co? przez blad w skrypcie (po poprawieniu jest ok), ktory powinien mi dawac puste OPTION-y, przegladarki sobie sciagaly zły kod, czy jak mam to rozumiec?
#luq
Jest to stack overflow, po prostu ilość optionów jest ograniczona, a przeglądarki nie mają zabezpieczeń przed przekroczeniem maxa. Błąd od dawna znany lecz cały czas powielany w przeglądarkach.
Możesz spojrzeć np. TU
varez
dzikie, gdyz po poprawieniu kodu dziala ok..

ten test z linku na ktorym podałes nie szczegolnie wzruszyl opere, choc zarla caly procesor i zuzycie pamieci roslo o 1MB/s :/

dzieki za info smile.gif
ps. a jaka jest max liczba optionów? dotyczy to optionów w ogole czy optionów w select`cie?
dr_bonzo
Cytat
ps. a jaka jest max liczba optionów? dotyczy to optionów w ogole czy optionów w select`cie?

Podejdz do tego od strony uzytecznosci - czy userowi bedzie sie chcialo przewijac minute ta liste opcji?
Moze skorzystaj z autocomplete i ajaxa?
varez
czasem sie nie da inaczej - jak klient sie uprze to ma..

edit:
a poł serwisu i tak jest cholernie nieuzyteczne..
erix
To Twoim zadaniem jest mu uzmysłowić, że komputer nie wydrukuje Ci buta. Popracuj nad perswazją. tongue.gif
varez
ja nie mam bezposredniego kontaktu z klientem.
wiesz co? lata mi to, poki co dziala, potem ew niech sie sypie, ja mam tysiac piecset sto dziewiecset innych spraw tongue.gif

zawsze staram sie zeby wszystko bylo najoptymalniejsze, ladnie wygladalo, wygodnie sie obslugiwalo, ale jak ktos za duzo marudzi, albo wysyla poprawki ktore zmieniaja caly mechanizm gdy ja uznaje projekt za skonczony, to przestaje mi zalezec

w perswazji zawsze bylem slaby
erix
Zawsze pozostaje rozwiązanie poboczne - SELECT w DHTML, jest masa takich skryptów.
wookieb
1) Co za durny temat. Ile ty masz lat? (dlaczego moderatorzy nie czepiają się tytułu??)
2) A tu nie trzeba perswazji "Panie, niestety na wielu przeglądarkach taka ilość opcji powoduje ich zawieszenie, proponuje (takie a takie rozwiazanie)" jak nie posłucha to juz jego problem. A za poprawke odpowiednio rozlicz i tyle.
varez
Cytat
1) Co za durny temat. Ile ty masz lat? (dlaczego moderatorzy nie czepiają się tytułu??)

Co w temacie jest "durnego"? To ze mialem problem o którym pewnie nie wie 98% ludzi?

Co ma do tego liczba moich lat? [btw: przeciez nie trzynascie, skoro robie w firmie od www :/] [20]

Ad 2. Czytaj temat jak sie wypowiadacz - ja sie z nikim nie rozliczam. A strona jest zamknieta[haslo], bedzie jej uzywac ok 7 osob.
wookieb
"Błąd w php" - jesteś pewien? A 99,999% takich tematów jest to błąd programisty. Wiec jak chcesz się upewnić, że to błąd to szukasz informacji na ten temat i robisz znacznie więcej operacji, które ten "błąd" potwierdzają.

"Sam odkryłem biggrin.gif" - no i? Nawet nie wiesz czy to błąd a chwalisz się jego odkryciem? Wyobrażasz sobie przyjście do urzędu patentowego kolesia z bananem na twarzy i powiedzeniem "odkryłem prąd ale nie działa w gumie sad.gif".

A co do tego ma liczba lat? Tylko dzieci tak piszą. A precyzyjniej "dzieci neo".
To, że sie nie rozliczasz nie oznacza, ze nie możesz wyrazić własnego zdania.
varez
Cytat
Błąd w php" - jesteś pewien?

Nie, nie jestem pewien, temu służy pytajnik, którego prawdopodobnie jeszcze nie dostrzegłeś (bo nawet mi go wyciąłeś cytując).

Cytat
Wiec jak chcesz się upewnić, że to błąd to szukasz informacji na ten temat i robisz znacznie więcej operacji, które ten "błąd" potwierdzają.

Nie spodziewałem się takiego zachowania z żadnej strony - ani od php, ani tymbardziej od przegladarki (a nawet wszystkich). Dlatego tu napisałem.

Cytat
"Sam odkryłem " - no i?

Ok, zapamiętam, że razi Cię mój luźny styl. Mnie może razić to, że czepiasz się byle czego (poważnie), zamiast zająć się czym pożytecznym.

Motyw z urzędem patentowym do mnie "nie przemawia", ale w koncu myslimy inaczej.

Cytat
Tylko dzieci tak piszą. A precyzyjniej "dzieci neo".

To opóźnienie STRASZNEJ PRAWDY do drugiego zdania ma mnie przestraszyć czy zawstydzić czy co? Wyzywanie od dzieci neo jest conajmniej tak samo śmieszne jak one same (chyba ze mowimy o przypadkach krytycznych).

Cytat
To, że sie nie rozliczasz nie oznacza, ze nie możesz wyrazić własnego zdania.

Własne zdanie wyraziłem na forum, ale sposób się nie spodobał, widać nie jestem w tym dobry.
A w mojej wypowiedzi, że się nie rozliczam, chodziło mi o to, że się nie rozliczam, a nie, że nie wyrażam własnego zdania..

Pozdrawiam serdecznie wookieb smile.gif
Wykrywacz
Cytat
Tylko dzieci tak piszą. A precyzyjniej "dzieci neo".

Cytat
1) Co za durny temat. Ile ty masz lat? (dlaczego moderatorzy nie czepiają się tytułu??)

Jak pokazuje twój przykład nie wiek stanowi o rozumie winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.