ITnetwork summer 2020
80 % bodů zdarma na online výuku díky naší Letní akci!
Avatar
vich alexandr:21. května 22:48

Ahoj-
jako naprosty zacatecnik s PHP by mne zajimalo , jak bude velka zatez serveru pri
vyhledavani zaznamu v cca.1.000,- polozek a pouziti switch nebo array .
Ktery zpusob je vhodnejsi ?
Rad bych vyuzit free server jen z duvodu nizke a specificke navstevnosti svych stranek ,takze bych nerad pusobit pripadne problemy .
Odpovedi typu "hledej smudlo" nebo "testuj smudlo" atd. by byly pod uroven normalniho cloveka .
Dekuji.

Zkusil jsem: porozumeni pro pole (array) se mi nepodarilo radne pochopit , pro muj ucel se mi zda zbytecne

Chci docílit: chci eliminovat zatez serveru

 
Odpovědět
21. května 22:48
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:22. května 8:25
  • Si to otestuj, ne? Ja to delam porad. Napisi program na localhost, pridam tam cyklus, pridam mereni casu a zkousim.
  • A pokud se ti to bude zdat pomale, tak si vyrob indexy, jak to dela sql.
  • Jinak, rozumny clovek by pouzil sql pro tabulky.
  • Napriklad serazeni 1.000.000 cisel trva kolem 500ms pomoci javascriptu na uzivatelove starsim typu pocitaci (mem). Pokud mas spravne napsany algoritmus, tak 1000 radku je zcela zanedbatelne cislo. Stejny test, serazeni, js, 1000 cisel, trva 4ms

https://mlich.zam.slu.cz/…sorting3.htm
Rozbalis Algoritmus, zasrtnes tam jen JS native a kliknes start. Firefox ukazuje ms.

https://www.php.net/…icrotime.php
Example #1 Timing script execution with microtime()

<?php
/**
 * Simple function to replicate PHP 5 behaviour
 */
function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

$time_start = microtime_float();

// Sleep for a while
usleep(100);

$time_end = microtime_float();
$time = $time_end - $time_start;

echo "Did nothing in $time seconds\n";
?>
 
Nahoru Odpovědět
22. května 8:25
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:22. května 8:33

To nelze rici, kdyz jsi nedal kod vyhledavaciho algoritmu ani nezname specifikace serveru, atd. Takze si ty arogantni poznamky typu testovani, hledani nech od cesty. Maximalne tak nekoho urazis. Treba chtel odpovedet, ale uz ti nenapise.

1000 radku je nic. Rekneme, ze se jedna o 1MB textovy soubor. Ale, kdyz budes delat zatez pravidelne, tak te posle server do haje. Pokud se jedna o tabulku, kde nikdo nebude delat upravy, muzes ji preci poslat uzivateli a at si s ni poradi jeho stroj, jak umi. Format json nebo csv. 1MB soubor nebo obrazek, to nejak zkousne. Kdyz mu pak pujde vyhledavani bleskove bez nutnosti zatezovat server. Pokud se nejedna ovsem o GDPR, tabulku osob. Tu poslat nemuzes, nebo bys nemel.

 
Nahoru Odpovědět
22. května 8:33
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
vich alexandr:23. května 16:53

to Petr Mlich -

dekuji za navod/myslenku (i s prikladem) , jak si vse otestovat sam .
Nevedel jsem , netusil jsem .

Ohradil bych se pouze o snaze nekoho urazit - - - dotaz byl psan
s uvedenim ze se jedna o "naprosty zacatecnik" , takze kazdy rozumny
by mohl pochopit , ze vlastni dotaz muze byt i ne zcela presny .
V puvodnim dotazu zadnou aroganci nevidim , ucim se sam
a kdysi davno ve skolnich lavicich jsme nikdo o PHP nemeli ani tuchy .
Toz tak , p.Mlichu .

 
Nahoru Odpovědět
23. května 16:53
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:25. května 10:25

Musel bys napsat vic konkretnich informaci. Z toho dotazu se neda prilis neco doporucit. Treba, jakeho typu ty informace jsou, priklad. Treba z jineho oboru, treba seznam knizek a autoru?
U tech poli a switchu je moznych nekolik zapisu a kazdy je vhodny pro neco jineho, jiny typ prace s polem. Takze tezko takhle doporucit, co by bylo vhodnejsi pro tvuj pripad, kdyz vlastne o tvem pripadu nic nevime.

if ($str=="aaa") {...}
elseif ($str=="bbb") {...}
elseif ($str=="ccc") {...}
elseif ($str=="ddd" || $str=="eee" || $str=="fff") {...}
else {...}

switch ($str)
{
case "aaa": ... break;
case "bbb": ... break;
case "ccc": ... break;
case "ddd": case "eee": case "fff": ... break;
case "ggg": ... ;
case "hhh": ... ;
case "iii": ... break; /// ggg hhh iii se treba pomoci ifu asi dela na 2x
default ...;
}

$list = array ("ddd", "eee", "fff");
if (in_array($str, $list)) {...}

$list = array ("ddd" => "xyz", "eee" => "abc", "fff" => "def");
foreach ($list as $key=>$value)
  {...}
if (isset($list["ddd"])) {...} // zjistovani existence pomoci isset je rychlejsi nez pomoci in_array

// atd, dalsich 1000 zapisu if, case, array, funkci kolem nich

Tvuj dotaz je, jako by ses zeptal, co je vhodnejsi pro tve auto, aby jezdilo znecistovalo zivotni prostredi co nejmene. Kdyz vlastne o tvem aute nic nevime, tak nemane tuseni, jake doplnky se k nemu daji poridit.

Editováno 25. května 10:28
 
Nahoru Odpovědět
25. května 10:25
Avatar
vich alexandr:26. května 18:22

to Peter Mlich :
jelikoz neexistuje uceleny seznam (vcetne lokalozace) vsech reckych mostu (stare mosty,klenbove)
vytvarim jejich jednoduchou mapu - na webu .
Soucasti stranek je i jednoduche zjisteni , kde se jaky/ktery most nachazi , a to podle jeho jmena .
Napr. - - - po vyberu jmena mostu pomoci naseptavace/da­talistu např. "Γέφυρα Πετσώνη" - Bridge of Petsioni - viz mapy.cz ) se mi po odkliknuti zobrazi jeho GPS souradnice (39°51'35.201"N, 20°47'59.606"E) .
Zatim mam lokalizovano cca.800 mostu ( dle reckych informaci je jejich celkovy pocet 1134 - - -) , navstivenych mame cca.200 (vsechny jeste nejsou fotograficky zpracovane) , z nichz(nihz???) mnoho z nejsou ani regulerne pojmenovane .
U nepojmenovanych mam rozlisene (dle OpenStreetMap) kde/v jakem regionu/provincii se nachazi vubec nejaky

most , takze naseptavac/datalist umi alespon priblize navest na most ktery by byl v "oku" zajmu .

Zobrazovani pomoci scriptu (JavaSript) jsem zavrhnul z duvodu snadneho stazeni/vykradeni celych zaznamu ,
proto snaha o posunuti se o kousek vyse .

Finalne ale pro MOJE snadnejsi pochopeni/preh­lednost celeho vytvareneho PHP jsem jako jednodussi variantu
zvolil cestu pres switch .
Nicmene domenka , abych nadmerne nezatezoval server , mne vedla
k puvodnimu dotazu - " zatez serveru ........" ..
Sam jsem si odpoved neumel odpovedet .

Staci tekove vystleni ?

Jeste jednou dekuji za navod na "samo-test" (jeste jsem nezprovoznil, pro mne zatim nepochopitelny) , Vas nasledny

navod vyzkousim , zda by mi vyhovoval .

Je to celkove vsechno tezke , kdyz ve skole byl jednim ze zakladu rustina a o pocitacich se tehdy vubec nevedelo

......
Az nyni mam na zabavu trochu casu .

Tak s pozdravem .

 
Nahoru Odpovědět
26. května 18:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.