kapec gan ne Posted June 3, 2012 Report Posted June 3, 2012 (edited) sveiki! problēma tāda curl izpildoties ciklā nem vairāk un vairāk ram lidz tas beidzas :{ nepabeidzot to pati funkcija kuru izmantoju ciklā: function grab($url = ''){ if(!$url) return 0; $curl = curl_init(); $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,"; $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; $header[] = "Cache-Control: max-age=0"; $header[] = "Connection: keep-alive"; $header[] = "Keep-Alive: 300"; $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; $header[] = "Accept-Language: en-us,en;q=0.5"; $header[] = "Pragma: "; curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1'); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_REFERER, false); curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate'); curl_setopt($curl, CURLOPT_AUTOREFERER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 300); ob_start(); return curl_exec ($curl); ob_end_clean(); curl_close ($curl); unset($curl); } kapec curl neatbrivo atminu? stav memory_limit -1 un izmanto 2GB Edited June 3, 2012 by kapec gan ne Quote
404 Posted June 3, 2012 Report Posted June 3, 2012 (edited) Te varētu būt 2 iemesli: 1) Tu ciklā veido entās cURL sesijas. Tā vietā var izmantot vienu,pirms cikla sadefinējot headerus + opcijas,un tālāk mainot tikai url: function move($url) { global $ch; curl_setopt($ch, CURLOPT_URL, $url); return curl_exec ($ch); } foreach($urls as $url) { $content = move($url); } 2) Return atrodas pirms ob_end_clean(); curl_close ($curl); unset($curl); Līdz ar to beigas neizpildās,un konekcijas netiek slēgtas. Edited June 3, 2012 by 404 Quote
werd Posted June 3, 2012 Report Posted June 3, 2012 http://stackoverflow.com/questions/4498976/php-curl-memory-leak-when-using-curlopt-returntransfer Quote
kapec gan ne Posted June 3, 2012 Author Report Posted June 3, 2012 Te varētu būt 2 iemesli: 1) Tu ciklā veido entās cURL sesijas. Tā vietā var izmantot vienu,pirms cikla sadefinējot headerus + opcijas,un tālāk mainot tikai url: function move($url) { global $ch; curl_setopt($ch, CURLOPT_URL, $url); return curl_exec ($ch); } foreach($urls as $url) { $content = move($url); } 2) Return atrodas pirms ob_end_clean(); curl_close ($curl); unset($curl); Līdz ar to beigas neizpildās,un konekcijas netiek slēgtas. paldies! primais variants izskatās ka būs īstais :) curl_close pirms return neko nemainija... Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.