[Fatal error: Out of memory]
 
Roky 22. sep 2010 19:48:15 Pridružen od:
9. apr 2008
2506 objav
3240 335 107
#11

@juresl, na vsake 100 krajov dumpej v sql, počisti vse variable, zažen garbage collecter, jovo na novo za 100 krajev ... taka mal kmečka:)


všeč(0) ni všeč(0) spam(0)
rok.meglic@gmail.com - 031 492 148
 
juresl 28. sep 2010 17:05:16 Pridružen od:
16. avg 2007
209 objav
74 23 4
#12

Hm.. ne razumem tega garbage collecterja, sem gledal google, celo na (http://www.wicked.si/) sem zasledil objavo, ampak še zdaj ne dojamem tega principa.. So baje tudi neke nove funkcije v php5. Torej.. ta skripta se izvaja dokler ne "porabi" memory limit-a, če ga povečam za ene par ničl, dobim po par urcah takšno napako (google chrome):




Ta spletna stran ni na voljo.



Spletna stran na naslovu http://kontakt.si/parsanje/parsanje.php morda začasno ne deluje ali pa je trajno premaknjena na novi spletni naslov.



Več informacij o tej napaki

V nadaljevanju je prvotno sporočilo o napaki



Napaka 324 (net::ERREMPTYRESPONSE): Neznana napaka.




Za vse, ki ste pripravljeni pomagat, uporabljam simple html dom parser, spodaj je koda (spletna stran načeloma ni pomembna). Spremenljivke ($var1,2,3..6) vrnejo izključno besedilo, brez kakšnih znakov, pa še to besedilo je dokaj kratko.


set_time_limit(60*60);
ini_set("memory_limit","64M"); // 64+
ini_set('error_reporting', E_ALL);

$url = 'url';
$begin = 40;
$end = 381;

header('Content-Type: text/html; charset=utf-8');
include("simple_html_dom.php");
$html = new simple_html_dom();

$html = file_get_html($url);
foreach($html->find('a') as $id => $element) {
if ($id > $begin && $id < $end) {
$html = file_get_html($element->href);
foreach($html->find('ul.ProductList a[class=]') as $id => $e) {
$var1 = $var2 = $var3 = $var4 = $var5 = $var6 = '';

$html = file_get_html($e->href);
foreach($html->find('div.BlockContent h2') as $e) {
$var1 .= $e->innertext;
}

foreach($html->find('div.Value strike') as $e) {
$var2 .= $e->innertext;
}

foreach($html->find('em.ProductPrice') as $e) {
$var3 .= $e->innertext;
}

foreach($html->find('span.YouSaveAmount') as $e) {
$var4 .= $e->innertext;
}

foreach($html->find('div.Value a') as $id => $e) {
$var5 .= str_replace('Buy in bulk and save', '', strip_tags($e->innertext));
}

foreach($html->find('div.ProductDescriptionContainer') as $e) {
$var6 .= strip_tags($e->innertext, '');
}

echo $var1."<br>\n";
echo $var2."<br>\n";
echo $var3."<br>\n";
echo $var4."<br>\n";
echo $var5."<br>\n";
echo $var6."<br>\n";
echo "<hr>";
}
}
}

Sedaj me pa zanima, kako bi lahko skripto "omejil", npr. da se po določenih izpisih vsavi shrani tekst in od tam dalje spet procesira, spet vstavi, shrani.. spet procesira.. in tako do konca, da bi na koncu dobil vse izpise. Btw. parsa najprej iz ene strani, nato iz te strani sparsa linke, gre na vsako stran od teh linkov in sparsa vsebino.



Najlepša hvala za odgovore in lep pozdrav, Jure!


všeč(0) ni všeč(0) spam(0)
 
rnk 29. sep 2010 16:37:10 Pridružen od:
27. avg 2010
48 objav
91 6 1
#13

Tole ti fali



$html = filegethtml(...);

// do something...

$html->clear();

unset($html);



http://simplehtmldom.sourceforge.net/manual_faq.htm


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se