login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Lange laadtijd script.

Offline thomasje - 29/07/2009 21:51
Avatar van thomasjeMySQL beginner Ik ben bezig met een zoekmachine, maar nu laad de pagina met resultaten zeer langzaam. Momenteel staan er ruim 200.000 producten in de database maar dat wil ik nog gaan verhogen naar 500.000 of zelfs 1 miljoen producten.

Wie heeft er tips hoe ik onderstaand script kan versnellen?
Mijn code: http://www.plaatscode.be/137255/

10 antwoorden

Gesponsorde links
Offline Gerard - 29/07/2009 23:07
Avatar van Gerard Ouwe rakker Maak als eerste eens gebruik van één query en pas dan SQL_CALC_FOUND_ROWS toe.

Je kan ook je tabel op MyISAM zetten en eens wat FULLTEXT indices toevoegen aan je tabel. Daarna moet je gaan zoeken met behulp van de populaire MATCH AGAINST, want een LIKE query is gewoon ontzettend langzaam.

Het resizen van de images zou ik niet on-the-fly doen, maar cache dat gewoon.

Je zou eventueel een Memcached server kunnen opstellen om dit geheel te cachen, zodat er niet elke keer een call wordt gedaan naar de database.
Offline thomasje - 30/07/2009 07:33
Avatar van thomasje MySQL beginner Wat bedoel je dat met: "Het resizen van de images zou ik niet on-the-fly doen, maar cache dat gewoon."?

Offline Ultimatum - 30/07/2009 08:49
Avatar van Ultimatum PHP expert Nu word er tijdens elke zoekopdracht per gevonden product een afbeelding gegeneerd, dit zal de pagina dus langzamer maken. Wat Gerard bedoeld is dat je al de thumb maakt als je bijvoorbeeld product aanmaakt in je database, en dan gebruik je die link in je zoekscript ipv dat je bij het zoeken pas je afbeelding gaat maken, want als ik 5 keer op F5 druk dan word er in theorie ook 5 keer een thumb gemaakt terwijl als je de thumb al hebt gemaakt hoef je alleen nog maar de afbeelding te laten zien.
Offline thomasje - 30/07/2009 08:57
Avatar van thomasje MySQL beginner Ja maar dat is juist het probleem ook. 99% van de producten worden via een xml bestand van 200 verschillende websites gehaald. De afbeeldingen staan ook allemaal op servers van die webwinkels.
Offline ArieMedia - 30/07/2009 09:36 (laatste wijziging 30/07/2009 10:06)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
thomasje schreef:
Ja maar dat is juist het probleem ook. 99% van de producten worden via een xml bestand van 200 verschillende websites gehaald. De afbeeldingen staan ook allemaal op servers van die webwinkels.
maak dan een tabel voor afbeeldingen en sla hier de tijd op. maak vervolgens een nieuwe afbeelding en ververs om de week de afbeelding. afbeelding ophalen kan met PHP.net: imagecreatefromjpeg deze kan url's aan.. Stukje wat ik ooit heb geschreven (doet het niet 100% want ik kopier niet de hele class);

  1. function screenCapt($url, $GenTijd) {
  2. if($GenTijd < time()) {
  3. // echo 'Bezig met : '.$url.'<br>';
  4. $sThaUrl = 'http://www.thumbizy.com/go_2.php?url='.$url.'&size=inter_ss&full=NO&effect=NO&inter_size=YES';
  5. $sImagesize = getimagesize($sThaUrl);
  6. list($sWidth, $sHeight) = $sImagesize;
  7. if($sWidth > 0) {
  8. //if($this->checkDir() == true) { echo 'ja'; } else echo 'nee'; die();
  9. $sSrc = imagecreatefromjpeg($sThaUrl);
  10. $sDest = './modules/weblink/images/'.$this->changeName($url).'.jpg';
  11. if(imagejpeg($sSrc, $sDest)) {
  12. $this->UpdateRecord($sDest, $url);
  13. }// else echo 'ImageJpeg fout bij: '.$url.'!<br>';
  14. }// else echo 'Cant Create '.$url;
  15. }
  16. }


Wat je ook nog kan doen is zulke dingen: "#
echo '<td valign="top" width="280" heigh="190" align="center" valign="middle" bgcolor="#D2FFB7">';"

In een CSS plaatsen. scheelt je heel wat HTML-code
Offline thomasje - 30/07/2009 09:44
Avatar van thomasje MySQL beginner Ja maar ik wil juist eigenlijk voorlkomen dat alle afbeeldingen op mijn server komen te staan.
Offline ArieMedia - 30/07/2009 09:48
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
thomasje schreef:
Ja maar ik wil juist eigenlijk voorlkomen dat alle afbeeldingen op mijn server komen te staan.
Waarom zou je dat willen voorkomen?
Offline thomasje - 30/07/2009 09:50
Avatar van thomasje MySQL beginner Omdat ik dan straks 750.000 afbeeldingen op mijn server heb staan.

Hoe doen andere zoekmachine zoeits? Zet google ze wel op eigen servers? En zou het veel schelen kwa tijd?
Offline ArieMedia - 30/07/2009 09:56 (laatste wijziging 30/07/2009 10:01)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
thomasje schreef:
Omdat ik dan straks 750.000 afbeeldingen op mijn server heb staan.

Hoe doen andere zoekmachine zoeits? Zet google ze wel op eigen servers? En zou het veel schelen kwa tijd?
Google zet het ook op eigen server. Maar wat je ook zou kunnen doen is de filesize ophalen, bestaat het dan doe je gewoon een link en doe je de resize met CSS.. En nog iets,,

while($aProduct = mysql_fetch_array($qSelect_producten))
Regel 36 omzetten naar mysql_fetch_assoc().

En alle echo's omzetten in $sRet. Bovenaan zetten $sRet = ''; Vervolgens elke "Echo" $sRet .= 'blablaa'; onderaan pagina zetten: echo $sRet;
Offline Ultimatum - 31/07/2009 11:27
Avatar van Ultimatum PHP expert Een mogelijkheid is om alleen de thumbs op je eigen server te zetten, dit scheelt in laadtijd van je zoekscript omdat je niet meer hoeft te resizen en het scheelt ruimte.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.189s