'd http ストリームstream_select
で実行しようとしています。fopen()
ただし、stream_select
これらのエラーが発生し続け、選択が失敗します。
Warning: stream_select(): cannot cast a filtered stream on this system
Warning: stream_select(): cannot cast a filtered stream on this system
Warning: stream_select(): cannot cast a filtered stream on this system
Warning: stream_select(): No stream arrays were passed
ストリームは次のように作成されます。
$ctx = array(..) // valid context, data is returned ok.
$fh = fopen($url,'r',NULL,$ctx);
// Result: resource(70) of type (stream)
では、フィルタリングされたストリームとは正確には何ですか?なぜ http ストリームがそのように見なされるのでしょうか?それを回避する方法はありますか? のドキュメントにstream_select
は、「zlib など、一部のストリームは選択できません」と記載されていますが、http については何も言及されていません。
編集: Google および PHP ドキュメントと会話した後、ストリームからメタデータをクエリして、フィルターが指定されているかどうかを確認しようとしましたが、答えは「いいえ」です。filters
メタデータには、このストリームがフィルターレスであることを示すインデックスがありません。
array(10) {
["wrapper_data"]=>
array(10) {
[0]=>
string(28) "HTTP/1.1 200 Content Follows"
[1]=>
string(35) "Date: Wed, 03 Oct 2012 16:14:01 GMT"
...
[9]=>
string(38) "Content-Type: text/html; charset=utf-8"
}
["wrapper_type"]=>
string(4) "http"
["stream_type"]=>
string(14) "tcp_socket/ssl"
["mode"]=>
string(1) "r"
["unread_bytes"]=>
int(2447)
["seekable"]=>
bool(false)
["uri"]=>
string(17) "http://domain.tld/"
["timed_out"]=>
bool(false)
["blocked"]=>
bool(true)
["eof"]=>
bool(false)
}