ホームページ  >  記事  >  バックエンド開発  >  PHP Web ページの出力情報が不完全です

PHP Web ページの出力情報が不完全です

WBOY
WBOYオリジナル
2016-06-23 13:46:421555ブラウズ

私のphpはソケットを介してサーバーからデータを受信します。長さはサーバーから送信されたバイト数と同じですが、htmlentitiesを通じて出力するのは不完全です。 Web ページですか? 結果を返すためにクエリが送信されるたびに、出力情報は常に減少します。たとえば、最初に 1,000 バイト以上減少しても、次は 2,000 バイト減少する可能性があります。この問題を解決するには?設定に問題がありますか?


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

何が問題なのか教えてください

どうすればよいですか?誰かがそのような無知な質問に答えますか?

php ウェブページは、HTML ウェブページのフォームを通じて php コードにポストし、サーバーが情報を受信した後、大量のデータ、バイナリ、およびデータを生成します。それを php クライアントに送信します。php クライアントはデータを受け取ります。データを受信した後、PHP は strlen を呼び出してメッセージ本文の長さがサーバーから送信されたパケットの長さと同じであることをテストし、表示します。これは、apche の Web サーバーを使用しているため、xampp の環境で正常に受信されていることがわかりました。 php-fpm で出力された情報が不完全であることを確認しました。現状何が起こっているのかわかりません。
ただし、フォームによって渡される値が Web ページによって制限されるほど大きくすることはできません。各ステップの結果を出力し、特殊文字が解析されているかどうかを確認してください。

jsonを処理するときに、windowとlinuxの文字が異なるという問題に以前遭遇しましたが、それは最初の数文字だけであり、それらをインターセプトするだけです。

echo htmlentities($data[$i],ENT_NOQUOTES,"utf-8")."
"; 私はこの出力を使用しますが、毎回その一部が出力され、場合によってはそれよりも多く出力されることもあれば、より少なく出力されることもあります。何が起こったのかわかりません。整数データの最初の 4 バイトを解析しましたが、その後はすべてバイナリ文字列であり、中国語を含む XML データ セットです。 xamppを使用してローカルでテストしました。すべてが正常で、Linuxサーバーに配置されたときにエラーが発生しただけです...手がかりがありません


PHPはデータを受信した後、メッセージ本文の長さをテストするためにstrlenを呼び出したので、サーバーが送信するパケットの長さと同じです
両方のサーバー環境で長さが同じですか?

問題はディスプレイにあります

はい、3 つのサーバーはすべてこのようになっています。設定の問題なのか、それとも別の場所にあるのか、今すぐ解決するのは簡単ではありません。

データがそれほど長くない場合 その場合、理由を分析できるように、データの Base64 エンコードを投稿できます

先ほどインターセプトしてテストしたデータ断片はすべて表示できます...それを解決するにはどうすればよいですか?ありがとうございます

これは XML 文字列ですが、すべて ですが、中国語は GBK でエンコードされています (少なくとも指定したこの部分は)

確認する必要があります出力時の処理コード

私はそれを処理します わかりました...笑 次のように:

$recv_res = iconv("gbk", "utf-8", $recv_res); そして、エコーするときに、 echo htmlentities($ data[$i],ENT_NOQUOTES,"utf -8")."
";

出力されるバイト数を制限する場所があるのだろうか...

考えるのを手伝ってもらえますかもう一度ありがとうございます...

誰かアドバイスをいただけますか? $recv_res = iconv("gbk", "utf-8", $recv_res); ?
メンバーの 1 つが utf-8 の場合はどうなりますか?それは混乱ではないでしょうか?


コードを投稿してください

でも、apache+php+mysql 環境では普通に出力できますし、データ量も減って完全には出力できないと思います。文字コードの問題とソースの書き込み データ送信時に文字コードがgbkと指定されているのですが 受信時も同じはずです

理由がわかる方いらっしゃいますか

どなたか教えていただけませんか

Nginx を使用している場合は、Nginx がリバース プロキシをオンにして、リバース プロキシの tmp ディレクトリ キャッシュにアクセス許可がない、またはキャッシュが小さすぎる原因となっているかどうかを確認できます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。