Autor Zpráva
Dan Fojtík
Profil
Zdravím,
narazil jsem na problém s vlastním skriptem, který parsuje CSV soubor.
Vypisuje hodnoty do tabulky, pouze vypíše hodnoty do buněk a na každý řádek tabulky přidá jeden checkbox. V tuto chvíli vše funguje dost rychle, i pro několik tisíc řádků.
Jenže, když chci na každý řádek přidat ještě select, celé se to o hodně zpomalí a většinou skript ani nedoběhne do konce a překročí časový limit... čím to může být?

Děkuji.
joejoe
Profil *
ono je otazka jak velky ten select je, ale podle toho, ze se to vyrazne spomali bych rekl, ze je dost velky.

v podstate mas 2 moznosti - smirit se s tim, ze to bude trvat dlouho + pouzit funkci set_timelimit() (na hostingu nemusi fungovat)

a nebo tu tabulku rozdelit na nekolik stranek.

v pripade, ze se stejny select stale opakuje, tak se da usetrit mnozstvi prenasenych dat treba pouzitim javascriptu (zatez se prenese na klienta - javascript muze byt zakazany)
Dan Fojtík
Profil
Select je pořád stejný, moc velký není, cca 20-30 položek, ale zpomalí se to i když je tam jenom jedna položka...
možnost javascriptu mě nenapadla - jsem jeho odpůrce, ale tady by možná pomohl, se zákazem není problém , protože se jedná o administraci, kterou budou používat jenom 1-2 lidé... díky za tip joejoe.
Ale kdyby někoho napadlo jiné, efektivnější řešení, nebráním se.
Acci
Profil
Ono taky záleží, o jaký skript se vlastně jedná. Negeneruješ náhodu select pokaždé znovu?
tiso
Profil
Niekedy stačí pohnúť rozumom čo musíš dať do cyklu a čo Ti stačí iba opakovane vypísať... Ak to nepochopíš tak sem hoď skript...
souki
Profil
na select doporočuju použít objekt. A u velkých se vyplatí generovat je přes JS až u klienta
rabbit
Profil
na select doporočuju použít objekt. A u velkých se vyplatí generovat je přes JS až u klienta
Myslíš přes AJAX?


Když jsem četl původní příspěvek, první co mě napadlo bylo, že tím selectem je myšlen dotaz do db. Až poté mi došlo, že je snad řeč o formulářovém prvku. I když, jeho obsah může být taky načítán z db. V případě tisíců dotazů do db by došlo k brutálnímu spomalení aplikace určitě.

IMHO .csv bych použil pro import/export, ne pro storage/zobrazování uložených dat. A zobrazovat tisíce řádků je už úplná zhůvěřilost. Prase by se v tom ztratilo, natož pak člověk ;-)

Jak někdo psal výše ... stránkovat!!!
Dan Fojtík
Profil
No, do csv samozřejmě neukládám, jenom potřebuju převést data z M$ Excelu do MySQL a nejlepší cesta je podle mě právě CSV. Zmíněný select sice obsahuje položky z DB, ale je mimo cyklus, tak se (snad) negeneruje pokaždé znovu. Nebo pokud jo (zas až tak PHP nerozumím), tak bych ocenil radu, jak toho docílit přes ten objekt... ten cyklus vypadá zhruba takto:

Proměnná $options obsahuje prvky <option> (pořád stejné), jednou vytažené z DB před samotným cyklem.



while($data=fgetcsv($fp, 1000, ";")) {
echo '<tr><td>'.$row.'</td><td>'.$data[0].'</td><td>'.$data[1].'</td><td>'. $data[2].'</td><td>'.$data[3].'</td>';
echo'<td><select name="cislo_kategorie['.$row.']">'.$options.'</select></td>';
echo'<td><input style="width: 15px;" type="checkbox" name="import_item['.$row.']"></td></tr>';
$csv[0][$row]=$data[0];
$csv[1][$row]=$data[1];
$csv[2][$row]=$data[2];
$csv[3][$row]=$data[3];
}
$row++;
Toto téma je uzamčeno. Odpověď nelze zaslat.

0