fsockopen のノンブロッキング モードについてはどうですか?なぜまだブロックされているのでしょうか?

WBOY
リリース: 2016-06-23 14:00:21
オリジナル
925 人が閲覧しました

function fsockopen_test(){    $hostname = 'm.cn';    $url = '/test/1.php';    $fp = fsockopen($hostname, 80, $errno, $errstr, 5);    if (!$fp) {        echo "$errstr ($errno)";        return false;    }    stream_set_blocking($fp,0);//开启了手册上说的非阻塞模式    $header = "GET $url HTTP/1.1\r\n";     $header.="Host: $hostname\r\n";    $header.="Connection: Close\r\n\r\n";//长连接关闭    fwrite($fp, $header);    fclose($fp);}fsockopen_test();
ログイン後にコピー

リクエストされた /test/1.php 内のコード:
sleep(6);$fp  =  fopen ( './data.txt' ,  'w' );fwrite ( $fp ,111);fclose ( $fp );
ログイン後にコピー
は、test/1.php が更新される前に実際に実行されるまで待機することをブラウザのコンソールを通じて確認できます。どうしてこれなの?


ディスカッションに返信(解決策)

問題ありません

echo date('Y-m-d H:i:s'), PHP_EOL;fsockopen_test();echo date('Y-m-d H:i:s'), PHP_EOL;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
は遅延がないことがわかります

問題ありません

echo date('Y-m-d H:i:s'), PHP_EOL;fsockopen_test();echo date('Y-m-d H:i:s'), PHP_EOL;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
は遅延がないことがわかりますね?なぜここにあるのですか?

問題ありません

echo date('Y-m-d H:i:s'), PHP_EOL;fsockopen_test();echo date('Y-m-d H:i:s'), PHP_EOL;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
は遅延がないことがわかります。コードを修正して元の出力をコメントアウトしたところ、まだ遅延があることがわかりました

問題ありません

echo date('Y-m-d H:i:s'), PHP_EOL;fsockopen_test();echo date('Y-m-d H:i:s'), PHP_EOL;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
は遅延がないことがわかります。
理由を見つけてください。わかりました。このコードをコメントアウトするだけでOKです
function fsockopen_test(){    $hostname = 'm.cn';    $url = '/test/1.php';    $fp = fsockopen($hostname, 80, $errno, $errstr, 5);    if (!$fp) {        echo "$errstr ($errno)";        return false;    }    stream_set_blocking($fp,0);//开启了手册上说的非阻塞模式    $header = "GET $url HTTP/1.1\r\n";     $header.="Host: $hostname\r\n";    $header.="Connection: Close\r\n\r\n";//长连接关闭    fwrite($fp, $header);    /*$html = '';    while (!feof($fp)) {        $html.=fgets($fp);    }    echo $html;*/    fclose($fp);}echo time(),'<br>';fsockopen_test();echo time(),'<br>';
ログイン後にコピー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!