Как получить вывод при использовании fsockopen, чтобы открыть страницу php?

Когда я использую fsockopen, чтобы открыть страницу php, код работает нормально, но есть и другие проблемы. Например: если я открою b.php в a.php, «echo» не будет работать в b.php, сообщение об ошибке тоже (эти две вещи отлично работают на обычной странице). Это делает отладку очень сложной. Как получить вывод на странице б?

Большое спасибо! вот мой код Я использую main.php для вызова main_single_block.php.PS: все работает нормально, кроме двух вещей, которые я упомянул выше.

main.php:

$template_url_arr_s = serialize($template_url_arr);
$fp = fsockopen($sochost, intval($socportno), $errno, $errstr, intval($soctimeout));
if (!$fp) {
echo "$errstr ($errno) ,open sock erro.<br/>\n";
}
$typename=  urlencode($typename);//do url encode (if not, ' 'can not be handled right)
$template_url_arr_s=  urlencode($template_url_arr_s);
*$out = "GET /main/main_single_block.php?typename=" . $typename . "&templateurlarr=" . $template_url_arr_s . "\r\n";*
fputs($fp, $out);
fclose($fp);

1

Решение

Вот основная структура:

template_url_arr_s = serialize($template_url_arr);
$fp = fsockopen($sochost, intval($socportno), $errno, $errstr, intval($soctimeout));
if (!$fp) {
echo "$errstr ($errno) ,open sock erro.<br/>\n";
}
$typename=  urlencode($typename);//do url encode (if not, ' 'can not be handled right)
$template_url_arr_s=  urlencode($template_url_arr_s);
$out = "GET /main/main_single_block.php?typename=" . $typename . "&templateurlarr=" . $template_url_arr_s . " HTTP/1.1\r\nHost: $sochost\r\nConnection: close\r\n\r\n";
fputs($fp, $out);
// First read until the end of the response header, look for blank line
while ($line = fgets($fp)) {
$line = trim($line);
if ($line == "") {
break;
}
}
$output = '';
// Read the body of the response
while ($line = fgets($fp)) {
$output .= $line;
}
fclose($fp);

Я добавил HTTP/1.1 параметр до конца GET линия, необходимая Host: заголовок и Connection: close заголовок, так что мне не нужно разбирать Content-Length: заголовок ответа.

Реальное приложение должно анализировать заголовки ответа, мой код выше просто пропускает их. Заголовок заканчивается пустой строкой, затем он собирает оставшуюся часть выходных данных в переменную.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]