Ga naar inhoud

[PHP/JS?] Uitvoeren meerdere pagina's, omzeilen exec.timeout


anoniem

Aanbevolen berichten

Aloha! Ik heb een aantal webpagina's in PHP gebakken die voor mij enkele webshops parseren voor artikelen en prijzen. Die zet ik dan in een database, waarin ik dan rustig kan zoeken. Probleem is nu, dat parsen, dat duurt even. 1 pagina is binnen de tijd, 2 pagina's gaat al over de exec.time limiet van PHP heen. Zo moet ik momenteel 33 keer klikken om elke webshop-pagina apart te updaten in de db. Ik kan thuis/localhost wel de exec. tijd verhogen, maar op de uiteindelijke webserver niet... helaas. Is het mogelijk om die exec.tijd te omzeilen? Ik zat eigenlijk te denken aan een JavaScript dat elke pagina voor mij opstart. Denk ik in de goede richting of is er misschien een makkelijkere of meer voor de hand liggende optie?? Met een zeer vriendelijk groetje, Marco
Link naar reactie
Kijk voor het verlengen van je timeout eens in de manual: http://nl3.php.net/manual/nl/function.set-time-limit.php Overigens raad ik niet aan om je timeout te verhogen. Je kan dan nog beter je pagina meerdere keren aanroepen. Bijvoorbeeld (uit de losse pols, ongetest en voor verbetering vatbaar ;)): [code:1:4beb8ba468] <?php $sites = array("http://www.shop1.nl", "http://www.shop2.nl"); $id = (integer) $_GET["id"]; if ($id >= 0 && $id < count($sites)) { // doe je ding met sites[$id] // volgend id inladen echo "<script type='text/javascript'>location.href = '" , $_SERVER['PHP_SELF'], "?id=", ++$id, "';</script>"; } else { echo "we zijn klaar of hebben geen geldige input gekregen"; } ?>[/code:1:4beb8ba468]
Link naar reactie
Thnx! Die snipplet doet precies wat ik in gedachten had. Ik had alleen niet verwacht dat het zo makkelijk was javascript erin te verwerken. Ik heb het even uitgewerkt naar een werkend lapje code. Er is een optioneel argument (singlePage=true) om een enkele pagina te kunnen parsen. Op plek $sites[0] heb ik een dummy gezet, omdat ik de card set (die ik parse) graag gelijk wil laten lopen met de teller (puur voor code-readability) [code:1:d07ab1f790] <?php $update_set = (integer)$_GET['update']; $sites = array( "dummy", "http://www.cardexchange.com/cardlist.php?cat=4&set=17", "http://www.cardexchange.com/cardlist.php?cat=4&set=82", "http://www.cardexchange.com/cardlist.php?cat=4&set=88", ... ); if ($update_set >0 && $update_set <count($sites)) { echo "Processing set $update_set: ".$sites[$update_set]."<br>\n"; flush(); $link = connect_select_lock_db($host,$db,$user); $data = parseURL($sites[$update_set]); process_data($data,$update_set); unlock_close_db($link); if (strcmp($_GET['singlePage'],"true") != 0 ) echo "<script type='text/javascript'>location.href = '". $_SERVER['PHP_SELF']. "?update=". ++$update_set. "';</script>"; } echo "Done :)<br>\n"; ?> [/code:1:d07ab1f790] Alle pagina's in het array doorlopen gaat met: update.php?update=1 En een enkele pagina: update.php?update=2&singlePage=true
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...