Heim >Backend-Entwicklung >PHP-Tutorial >nginx - LNMPA环境下PHP异步请求的问题

nginx - LNMPA环境下PHP异步请求的问题

WBOY
WBOYOriginal
2016-06-06 20:48:381121Durchsuche

使用php的socket实现异步请求。一般的使用以下代码都可以实现

<code>$fp = stream_socket_client($host.':'.$part, $errno, $errstr, 30);
if ($fp) {
    $out = "GET /".$request." HTTP/1.1\r\n";
    $out .= "Host: ".$host."\r\n";;
    $out .= "Connection: Close\r\n\r\n"; 
    fwrite($fp, $out);  
    fclose($fp);
}
</code>

好几台服务器都是相同的环境,但是有台服务器,必须要在fwrite后面加上以下代码,相应的请求才可以执行。

<code>while (!feof($fp)) {
    echo fgets($fp, 1024);
}
</code>

在本地测试(apache)是没有问题的,我也怀疑过nginx的问题,但是有其他服务器使用同样的配置确实没有问题,有没有遇到过这样的问题的同学,求指教!

回复内容:

使用php的socket实现异步请求。一般的使用以下代码都可以实现

<code>$fp = stream_socket_client($host.':'.$part, $errno, $errstr, 30);
if ($fp) {
    $out = "GET /".$request." HTTP/1.1\r\n";
    $out .= "Host: ".$host."\r\n";;
    $out .= "Connection: Close\r\n\r\n"; 
    fwrite($fp, $out);  
    fclose($fp);
}
</code>

好几台服务器都是相同的环境,但是有台服务器,必须要在fwrite后面加上以下代码,相应的请求才可以执行。

<code>while (!feof($fp)) {
    echo fgets($fp, 1024);
}
</code>

在本地测试(apache)是没有问题的,我也怀疑过nginx的问题,但是有其他服务器使用同样的配置确实没有问题,有没有遇到过这样的问题的同学,求指教!

好像是缓冲区的问题, php的output_buffering。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn