cURL в PHP, хотя цикл запускается только один раз - PullRequest
0 голосов
/ 29 февраля 2012
while($dataR = mysql_fetch_array($data)){
    $postcode = str_replace(" ", "+", $dataR['Postcode']);
    echo $postcode."<br />";
    $oPostcode = $dataR['Postcode'];
    // Retrieve the DOM from a given URL
    $url = 'http://www.1.com';
    $fields = array(
                'txtPostCode'=>urlencode($oPostcode)


            );

    //url-ify the data for the POST
    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
    rtrim($fields_string,'&');

    $ch = curl_init();

    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_POST,count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

    //execute post
    $result = curl_exec($ch);
    curl_close($ch);
    unset($ch);
    //close connection

    $html = str_get_html($result);
    print_r($html);
}

Это мой код. Однако раздел cURL запускается только в первый раз - что мне делать? Я пытался понять curl_multi_exec, но не могу найти простой ответ.

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Лучше всего отделить ваш запрос cURL от цикла ... так что-то вроде этого подойдет ..

while($dataR = mysql_fetch_array($data)){
$postcode = str_replace(" ", "+", $dataR['Postcode']);
echo $postcode."<br />";
$oPostcode = $dataR['Postcode'];
// Retrieve the DOM from a given URL
$url = 'http://www.1.com';
$fields = array(
            'txtPostCode'=>urlencode($oPostcode)


        );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');


// Execute youru cURL here.
$data = array(
'url' => $url,
'fiels' => count($fields),
'field_string' => $fields_string
);
executecURL($data);

$html = str_get_html($result);
print_r($html);
}

function executecURL($data) {
    $ch = curl_init();
    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL,$data['url']);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_POST,count($data['fields']));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$data['fields_string']);

    //execute post
    $result = curl_exec($ch);
    curl_close($ch);
    unset($ch);
    //close connection
}
0 голосов
/ 29 февраля 2012

Попробуйте unset в поле $ & $ field_string


unset($fields);
unset($fields_string);

перед повторным использованием

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...