検索
ホームページバックエンド開発PHPチュートリアルfsockopen はスムーズに実行されますが、fwrite が失敗する理由は何ですか?

fsockopen は成功するが、fwrite が失敗する理由は何ですか?

ローカルおよび WINDOWS サーバー上でテストされており、非常に安定しています。

しかし、LINUX サーバーでは、fsockopen は毎回成功しますが、fwrite はほとんどの場合失敗し、一度成功するまでに長い時間がかかります。 。

そのような状況に遭遇した人はいますか? 。
さらに//コメントマークの部分、誰か説明してもらえませんか。 。

コードは次のとおりです。

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
$matches = parse_url($url);
    !isset($matches['host']) && $matches['host'] = '';
    !isset($matches['path']) && $matches['path'] = '';
    !isset($matches['query']) && $matches['query'] = '';
    !isset($matches['port']) && $matches['port'] = '';
    $host = $matches['host'];
    $path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';
    $port = !empty($matches['port']) ? $matches['port'] : 80;
    if($post) {
        $out = "POST $path HTTP/1.0\r\n";
        $out .= "Accept: */*\r\n";
        $out .= "Accept-Language: zh-cn\r\n";
        $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
        $out .= "Host: $host\r\n";
        $out .= 'Content-Length: '.strlen($post)."\r\n";
        $out .= "Connection: Close\r\n";
        $out .= "Cache-Control: no-cache\r\n";
        $out .= "Cookie: $cookie\r\n\r\n";
        $out .= $post;
    } else {
        $out = "GET $path HTTP/1.0\r\n";
        $out .= "Accept: */*\r\n";
        $out .= "Accept-Language: zh-cn\r\n";
        $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
        $out .= "Host: $host\r\n";
        $out .= "Connection: Close\r\n";
        $out .= "Cookie: $cookie\r\n\r\n";
    }
    
    $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
    
    if(!$fp) {
        return '';//note $errstr : $errno \r\n
    } else {
        stream_set_blocking($fp, $block);
        stream_set_timeout($fp, $timeout);var_dump($fp);
        @fwrite($fp, $out);
//注释标记
        /*$status = stream_get_meta_data($fp);
        if(!$status['timed_out']) {
            while (!feof($fp)) {
                if(($header = @fgets($fp)) && ($header == "\r\n" ||  $header == "\n")) {
                    break;
                }
            }

            $stop = false;
            while(!feof($fp) && !$stop) {
                $data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));
                $return .= $data;
                if($limit) {
                    $limit -= strlen($data);
                    $stop = $limit 





------解決策 ------------------
ファイルの可読性を確認してください。
------解決策------------------
PHP コード

/* 元の投稿者のアプリケーションについては、TCP ソケットに関する情報をいくつか示します */
        $status = stream_get_meta_data($fp);
/* ここでは、TCP 接続がタイムアウトしたかどうかを確認します */
        if(!$status['timed_out']) {
/* タイムアウトがない場合は、ファイルの終わりに達するまでデータを読み取ります */
            while (!feof($fp)) {
/* ここでHTTPヘッダ情報を読み込むため、空行でヘッダ情報の終わりとなるため、ブレークが必要です */
                if(($header = @fgets($fp)) && ($header == "rn" || $header == "n")) {
                    壊す;
                }
            }
/* ここで読み込むHTTPボディは、少なくともHTTPレスポンスヘッダにContent-Lengthがあるかどうかを確認して、それを元に処理するのが少し荒いのではないかと思います。それは次のようになります */
            $stop = false;
            while(!feof($fp) && !$stop) {
/* 最大 8192 バイトを読み取ります ($limit は減少します) */
                $data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));
/* 読み取った内容を戻り文字列に連結します */
                $return .= $data;
                if($limit) {
                    $limit -= strlen($data);
                    $stop = $limit <font color="#e78608">------解決策---------------------- <div class="clear"></div></font>
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
主板上的数字音频输出接口-SPDIF OUT主板上的数字音频输出接口-SPDIF OUTJan 14, 2024 pm 04:42 PM

主板上SPDIFOUT连接线序最近我遇到了一个问题,就是关于电线的接线顺序。我上网查了一下,有些资料说1、2、4对应的是out、+5V、接地;而另一些资料则说1、2、4对应的是out、接地、+5V。最好的办法是查看你的主板说明书,如果找不到说明书,你可以使用万用表进行测量。首先找到接地,然后就可以确定其他的接线顺序了。主板vdg怎么接线连接主板的VDG接线时,您需要将VGA连接线的一端插入显示器的VGA接口,另一端插入电脑的显卡VGA接口。请注意,不要将其插入主板的VGA接口。完成连接后,您可以

Laravel中take和limit的使用方法详解Laravel中take和limit的使用方法详解Mar 10, 2024 pm 05:51 PM

《Laravel中take和limit的使用方法详解》在Laravel中,take和limit是两个常用的方法,用于在数据库查询中限制返回的记录数。虽然它们的作用类似,但在具体的使用场景中有一些细微的区别。本文将详细解析这两个方法的用法,并提供具体的代码示例。一、take方法在Laravel中,take方法用于限制返回的记录数,通常结合orderBy方法一起

out和in接口是什么意思out和in接口是什么意思Sep 28, 2021 pm 04:39 PM

out接口指的是输出接口,in接口指的是输入接口。out接口一般代表着音源线路输出接口,用来接负载,例音箱、耳机等;而in接口一般代表着音源线路输入接口,用来接CD机、手机、MP3、电脑等。

AMP是什么币?AMP是什么币?Feb 24, 2024 pm 09:16 PM

什么是AMP币?AMP代币是由Synereo团队于2015年创立,作为Synereo平台的主要交易货币。AMP代币旨在通过多种功能和用途,为用户提供更好的数字经济体验。AMP代币的用途AMP代币在Synereo平台中拥有多重角色和功能。首先,作为平台的加密货币奖励系统的一部分,用户能够通过分享和推广内容来获得AMP奖励,这一机制鼓励用户更积极地参与平台的活动。AMP代币还可用于在Synereo平台上推广和传播内容。用户可以通过使用AMP代币提升他们的内容在平台上的曝光率,以吸引更多观众来查看和分

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code<form name="myform"

Laravel中take和limit的功能及用法对比Laravel中take和limit的功能及用法对比Mar 09, 2024 pm 09:09 PM

Laravel中take和limit是两种常用的方法,用于限制查询结果集的数量。虽然它们在功能上有一定的相似之处,但在使用方式和一些细节上有所不同。本文将对这两种方法的功能及用法进行详细对比,同时提供具体的代码示例,帮助读者更好地理解它们之间的区别和如何正确地应用。1.take方法take方法是LaravelEloquent查询构建器中

win10系统闪退显示out of memory怎么办?win10系统闪退显示out of memory怎么办?Feb 09, 2024 pm 03:00 PM

win10系统闪退显示outofmemory,近期很多的用户在使用电脑的时候,出现了这个提示,导致需要经常的重启进行修复,那么这种情况我们应该如何处理,针对这个问题,本期的win10教程就来和广大用户们分享完整操作步骤,希望能够帮助更多的小伙伴解决问题。win10系统闪退显示outofmemory怎么办1、右击桌面上的此电脑,选择选项列表中的“属性”。2、进入到新的窗口界面后,点击左上角的“高级系统设置”选项。3、在打开的窗口中,切换到上方中的“

如何使用Java中的Stream的limit和skip函数进行流操作如何使用Java中的Stream的limit和skip函数进行流操作Jun 26, 2023 pm 03:55 PM

Java8中引入了StreamAPI,它能够极大地简化对集合的操作。Stream类提供了许多用于操作流的函数式方法,包括过滤、映射、合并等等。其中,limit和skip是用于流操作中限制元素数量的两个函数。一、limit函数limit函数用于限制流中元素的数量,它接受一个long类型的参数n,表示限制的数量。调用limit函数后,返回一个新的流,它仅包含

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール