Любой другой хороший вариант для fsockopen? - PullRequest
0 голосов
/ 05 октября 2010

Я пытаюсь заставить код ниже работать с curl или чем-то еще.Я уже взглянул на преобразование curl fsockopen , но оно не работает.Код работает, за исключением того, что fsockopen отключен на моем хосте.Любая помощь будет оценена.

$host = substr($hostport,0,50);
$port = substr($hostport,50,10);
$issecure = substr($hostport,60,1);

if($issecure=="Y")
{
    $host = "ssl://".$host;
}
$fsok = fsockopen(trim($host) , intval(trim($port))); 
if(FALSE == $fsok )
{
    echo "Target Host not Found/Down"; return ;
}
fwrite($fsok, $bodyData ); 
$port ='';$host ='';$hostport= '';$bodyData='';

while ($line = fread($fsok, 25000))
{
    echo $line;
}

fclose($fsok); 
return $line;

1 Ответ

1 голос
/ 05 октября 2010

Предполагая, что вы используете http / https в качестве протокола, должно сработать что-то вроде следующего:

$client = curl_init();

$options = array(
  CURLOPT_PORT => $port
  CURLOPT_RENTURNTRANSFER => true,
  CURLOPT_SSL_VERIFYPEER => false, // dont verify the cert
  CURLOPT_URL => ($issecure ? 'https://' : 'http://'). $host
);

$response = curl_exec($client);

if(false !== $response) {
  echo $response;
  return $response;
} else {
  if($error = curl_error($client)) {
    echo $error;
    return $error;
  } else {
    echo 'Something is wrong. Error could not be determined.';
  }
}

Еще один замечательный и удобный способ использовать Zend_Http_Client, поддерживающий fsockopen и curl так что вы можете легко переключаться назад и вперед без изменения кода.

...