2010-12-23 18 views
1

Ich benutze cUrl, um auf eine Webseite (nicht lokal) zu POST und dann zurück die HTML.PHP/Curl - Loop & POST-Puffer nicht löschen

Ich muss dies mehrmals tun, so dass der cUrl-Code in einer while-Schleife ist. Hier ist die seltsame Sache: Es funktioniert wie erwartet beim ersten Mal, aber scheint nicht den POST-Puffer jedes Mal danach zu löschen. (Ich mache close_curl ($ ch). Und alle Daten über POST sind korrekt.)

Zum Beispiel sollte eines der Textfelder (und, das erste Mal, ist) übergeben "ANY". Aber beim zweiten Mal geht es "ANY, ANY".

Bin ich richtig, dass dieses Problem in einem ungelösten POST-Puffer liegt? Wie kann ich es reparieren?


SORRY: Hier ist eine verkürzte Version des Codes ...

$someResults = mysql_query($someSQL); 

while($record = mysql_fetch_array($alertResults)){ 
    $url = "http://something.com/searchResults.asp"; 
    $someV = "Hi"; 

    $fields = array(
     //date to post. 
    );  

    foreach($fields as $key=>$value){ 
     $fields_string .= $key .'='. $value . '&'; 
    } 
    rtrim($fields_string,'&'); 
    $ch = curl_init(); 
    $userAgent = 'Googlebot/2.1 (http://www.googlebot.com/bot.html)'; 
    curl_setopt($ch,CURLOPT_USERAGENT, $userAgent); 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_POST,count($fields)); 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); 
    curl_setopt($ch, CURLOPT_FAILONERROR, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    curl_setopt($ch, CURLOPT_FORBID_REUSE, true); 
    ob_start(); 
    $html = curl_exec($ch); 
    curl_close($ch); 

    $dom = new DOMDocument(); 
    @$dom->loadHTML($html); 
    $xpath = new DOMXPath($dom); 
    $resultTable = $xpath->evaluate("/html/body//table"); 
} 

Und wenn ich das tue, das erste Mal durch die Schleife $ Result hat 60 Elemente darin. Aber jedes Mal danach (mit der gleichen URL) hat es 0 Elemente. Und ich bin mir ziemlich sicher, dass es ist, weil der POST-Puffer nicht gelöscht wird und Dinge über vorherige POST-Daten gepostet werden.

Wie kann ich die POST-Daten jedes Mal durch die Schleife löschen?

+4

könnten Sie den Code der Schleife/curl posten? – Oli

+0

Wie @Oli sagt, müssen wir den Code wirklich sehen, wenn wir das Problem analysieren wollen. :-) –

+0

Hinzugefügt! Hilfe wird sehr geschätzt. –

Antwort

1

Sie scheint $fields_string zurückgesetzt vergessen, so versuchen Sie diese

... 
curl_close($ch); 
unset($fields_string); 
...