$fp
を使用して開かれたファイルポインタに書き込むための次の PHP コードがありますfsockopen
。
syslog(LOG_INFO, "Write " . strlen($buf) . " bytes to socket:");
$bytes = 0;
while ($bytes < strlen($buf) && ($w = @fwrite($fp, substr($buf, $bytes))))
{
syslog(LOG_INFO, " - " . $w . " bytes written to socket");
$bytes += $w;
}
if ($bytes != strlen($buf))
{
syslog(LOG_INFO, "error while writing to socket");
exit();
}
$buf
のサイズが十分に小さい限り、このコードは正常に機能します。大量のデータを完全に書き込めません。次の出力が得られます。
Write 4900360 bytes to socket:
- 11096 bytes written to socket
error while writing to socket
ところで。fwrite
is0
と notの戻り値false
。
何が問題なのか考えている人はいますか?ご回答ありがとうございます
fwrite の前にある @ を削除すると、次の通知が表示されます。
Notice: fwrite(): send of 8192 bytes failed with errno=104 Connection reset by peer in /root/test.php on line 10
Notice: fwrite(): send of 8192 bytes failed with errno=32 Broken pipe in /root/test.php on line 10
TCP ストリームを盗聴したところ、
HTTP/1.1 413 Request Entity Too Large
この問題の修正はありますか? lighttpd/1.4.22 サーバーを使用しています