2012-06-06 22 views
16

Tengo un script PHP con el que quiero leer los servidores de la base de datos y conectarlos con cURL. Los servidores responden con los resultados de la consulta SQL. El problema es que después de cada escritura de responder desde las pantallas de servidor número 1. que la salida se ve así:cURL y PHP que muestra "1"

Servidor 1: algunos resultados

1server 2: algunos resultados

1server 3: algunos resultados

Aquí está el código que lee los servidores de base de datos y se conecta a ellos:

<?php 

$mysql_id = mysql_connect('localhost', 'ms', 'pass'); 
mysql_select_db('servers', $mysql_id); 
mysql_query("SET NAMES utf8"); 

$query = "SELECT * FROM svr"; 
$result = mysql_query($query); 
$num = mysql_num_rows($result); 
while ($data = mysql_fetch_assoc($result)) 
{ 
    $server[] = $data; 
} 

mysql_close($mysql_id); 

$i = 0; 
while($i < $num) { 
    $dealer = $server[$i]['dealer']; 

    echo $dealer . "<br />"; 

    $data = "val=a"; //just for testing                  

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                      
     'Content-Type: text/html; charset=utf-8')                  
    );                                             

    $result = curl_exec($ch); 
    echo $result; 
    $i++; 
} 

?> 

Descubrí que 1 se muestra con "echo $ result;" y el código para crear la respuesta es la siguiente:

<?php 

$mysql_id1 = mysql_connect('localhost', 'ms', 'pass'); 
mysql_select_db('servers', $mysql_id1); 
mysql_query("SET NAMES utf8"); 

    $query2 = "SELECT * FROM data"; 
    $result2 = mysql_query($query2); 
    $num2 = mysql_num_rows($result2); 
    while ($data2 = mysql_fetch_assoc($result2)) 
    { 
     $deli[] = $data2; 
    } 
    $i1 = 0; 
    $space = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"; 
    while ($i1 < $num2) { 
     echo $space . $deli[$i1]['id'] . " "; 
     echo $deli[$i1]['artikel'] . " "; 
     echo $deli[$i1]['znamka'] . " "; 
     echo $deli[$i1]['model'] . " "; 
     echo $deli[$i1]['letnik'] . " "; 
     echo $deli[$i1]['cena'] . " € "; 
     echo $deli[$i1]['zaloga'] . "<br />"; 
     $i1++; 
    } 
    echo "<br />"; 
    mysql_close($mysql_id1); 
?> 

Por favor, me ayudan a

Respuesta

47

Utilice la opción CURLOPT_RETURNTRANSFER. De lo contrario, cURL hará eco automáticamente de los datos y simplemente devuelve true (que se convierte a 1 por echo).

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
7

Es necesario utilizar CURLOPT_RETURNTRANSFE o curl_exec devuelve un StatusCode y envía la respuesta a la salida estándar:

opción
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
0

Uso CURLOPT_RETURNTRANSFE de lo contrario se devolverá un statuscode y envía la respuesta a la salida estándar:

curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, verdadero);

1

CURLOPT_RETURNTRANSFER SHAUD ser verdad para devolver la transferencia como una cadena del valor de retorno de curl_exec() en lugar de mostrar la salida directly.read la documentación completa php.net

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

o se puede hacer

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);