anoniem Geplaatst: 14 december 2004 Delen Geplaatst: 14 december 2004 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 Quote Link naar reactie
anoniem Geplaatst: 14 december 2004 Auteur Delen Geplaatst: 14 december 2004 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] Quote Link naar reactie
anoniem Geplaatst: 15 december 2004 Auteur Delen Geplaatst: 15 december 2004 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 Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen