Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

Pagina laad zeer traag - verkeerde opbouw script ?

Pagina: 1
Acties:
  • 253 views

  • NECAnGeL
  • Registratie: Januari 2004
  • Laatst online: 16-09 07:29
Hallo Allemaal,

Ik gebruik op mijn website het onderstaande script.
Nu heeft dit altijd goed gewerkt maar sinds een aantal dagen gaat het zeer traag allemaal. Wij hebben namelijk een aantal bedrijven toegevoegd aan onze website.
De database bevat +- 100.000 bedrijven

Kan het dat het door onderstaande script komt ?


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$query = mysql_query("select a.id, a.categorie from bedrijven_categorieen a LEFT JOIN bedrijven_hoofdcategorieen b ON a.id_hoofdcategorie = b.id where b.hoofdcategorie = \"Huis\" order by a.categorie asc");
        for($index=0; $index<mysql_num_rows($query);$index++)
        {
            $row = mysql_fetch_array($query);
            $categorie = stripslashes($row['categorie']);
            $id_categorie = $row['id'];
            $query2 = mysql_query("select id from bedrijven where id_bcategorie = \"".addslashes($id_categorie)."\" and ind_actief = \"Y\" and ind_zichtbaar_in_zoekmachine = \"Y\"");
            $aantal_bedrijven = mysql_num_rows($query2);
                // START EDIT
                    $urlomschrijving =     $categorie;
                    $id_pagina =         $id_categorie;
                // EIND EDIT
                    // alle niet-alphanumerieke tekens door streepjes vervangen, en strtolower
                    $naam_pagina_url = trim($naam_pagina_url);
                    $naam_pagina_url = strtolower(ereg_replace("[^A-Za-z0-9]", "-", $urlomschrijving));
                    while(strpos($naam_pagina_url, "--") !== false)
                    {
                        $naam_pagina_url = str_replace("--", "-", $naam_pagina_url);
                    }
                    if(substr($naam_pagina_url, -1) == "-")
                    {
                        // -id aan het eind toevoegen
                        $naam_pagina_url = $naam_pagina_url.$id_pagina;
                    }
                    else
                    {
                        // -id aan het eind toevoegen
                        $naam_pagina_url = $naam_pagina_url."-".$id_pagina;
                    }
                    unset($positie_evt_volgend_streepje);
                // START EDIT
                    $urlomschrijving1 = $naam_pagina_url;
                // EIND EDIT
            echo "<div class=\"bedrijven_col\"><ul><li><a href=\"/bedrijven/huis/vorige-pagina/bedrijven/categorienummer/".$urlomschrijving1."/zoekresultaat.html\">".htmlentities($categorie, ENT_QUOTES)." (".$aantal_bedrijven.")</a></li></ul></div>";
            if(fmod($index, 3) == "2")
            {
                echo "<div class=\"clearboth\"></div>";
            }
            unset($aantal_bedrijven);
        }

https://www.rbwebpromotions.nl/


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Je voert nu waarschijnlijk enorm veel queries uit door die query in de for()-loop. Het lijkt mij dat dat is op te lossen door middel van een JOIN, zodat je nog maar 1 query nodig hebt.

Sole survivor of the Chicxulub asteroid impact.


  • NECAnGeL
  • Registratie: Januari 2004
  • Laatst online: 16-09 07:29
Nu komt het grote probleem mijn kennis is minimaal.
Dit script is door een bedrijf geschreven alleen die zijn met vakantie :(
Je zult dan altijd zien dat dit zich voordoet. Vandaar dat ik even dit post.
Hoe kan ik dit dan aanpassen.

https://www.rbwebpromotions.nl/


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Als je de 2 queries combineert (die buiten de loop en die in de loop) heb je die loop niet meer nodig, en nog maar 1 query. Dat zou al gigantisch moeten schelen. Daarnaast kan je door middel van EXPLAIN nog controleren of er indexes gebruikt (kunnen) worden en die zo nodig plaatsen.

Sole survivor of the Chicxulub asteroid impact.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:42

Creepy

Tactical Espionage Splatterer

Sorry hoor maar support op code van anderen geven we hier niet. Je zult toch echt bij dat "bedrijf" moeten zijn. En kom op: een heel bedrijf dat met vakantie is? Echt geloofwaardig klinkt dat niet. Mocht het een eenmanszaak zijn: gewoon bellen op z'n vakantieverblijf. Het bedrijfsleven staat niet stil als hij op vakantie is.

Daarnaast: een join lost nog wel wat op waarschijnlijkt. Ook een count() gebruiken i.p.v. een mysql_num_rows scheelt ook nogal. No offence maar echt lekkere code is het niet. Ik hoop niet dat je teveel hebt betaald......

[ Voor 25% gewijzigd door Creepy op 01-07-2008 11:41 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Dit topic is gesloten.