Jo: PHP Curl memory Fehler

Beitrag lesen

Nicht abfangen, vermeiden lautet die Devise. Es gibt die Option CURLOPT_FILE und auch CURLOPT_WRITEFUNCTION.

O.K., danke für den Tipp, ich hab nun folgendes ausprobiert:

//Daten mittels Curl zurückgeben
function get_data($url){
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL,$url);
  if($GLOBALS["wms_proxy"]){
	curl_setopt($ch, CURLOPT_PROXY, $GLOBALS["wms_proxy_host"]);
	curl_setopt($ch, CURLOPT_PROXYPORT, $GLOBALS["wms_proxy_port"]);	  
  }
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
  curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'curl_write_function');
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

//Curl write Funktion zum Abfangen von zu großen Datenanfragen
$curl_data_string = "";
function curl_write_function($handle, $data) {
	global $curl_data_string;
	$curl_data_string .= $data;
	if (strlen($curl_data_string) > 100000) {
		return 0;
	}else {
		return strlen($data);
	}
}

Verstehe ich das richtig, die Anfrage wird gestoppt, wenn die Länge des z.B. angefragten XML-Dokumentes mehr als 100000 Zeichen hat und gibt dann nix zurück? Wenn die Bedingung erfüllt wird bekomme immer eine 1 zurück. Das klappt auch, muss ich also diese Bedingung abfragen und bei 1 den Curl Request erneut ohne CURLOPT_WRITEFUNCTION absetzen?

??? Jo