On Thu, January 19, 2006 5:17 am, Jochem Maas wrote: > Richard Lynch wrote: >> So I've been poring over the docs for the new stream stuff, and it >> looks pretty nifty, except... >> >> I'd really like to be able to just hand a URL to PHP like: >> http://php.net/manual/en/ref.stream.php > > er you can if allow_url_fopen ini setting is set to 1 (can't you?) > > $fh = fopen('http://php.net/'); The crucial point buried too far into my initial post (sorry): I NEED to specify a timeout for the initial CONNECTION to acquire the data. fopen does not allow this. fsockopen does, but then I'm stuck with re-inventing the wheel on handling dozens of different protocols to initiate the process to get the data rolling. For HTTP, you have to send "GET $path HTTP/1.0\n" For FTP, you have to send "GET $path\n" For a file, you don't send anything . . . So to get all the functionality of fopen() I'd need a monster long switch statement with a bunch of protocols about which I know almost nothing, including some rather complex stuff I can guarantee is over my head for ssl:// https:// ftps:// and friends. I really do not want to re-code all that, when I know it's down in the guts of 'fopen' In other words, I need an additional 'timeout' argument to fopen() that works when url_wrappers is on, or a function to set the default timeout for fopen() to wait. PLEASE don't refer me to stream_set_timeout. THAT only applies to how long to wait for data AFTER the stream is open and you are reading data. I'm asking for: The convenience of fopen() that knows about dozens of protocols and takes care of the grotty details so I can just start reading data. The power of fsockopen() that allows one to specify how long to wait for a slow source feed. What I was hoping for, then, was that I could call this mythical function url2context() that would convert *any* URL into an appropriate stream context. Then I thought I would be able to use that contact for fsockopen() with a timeout for connection. I now see that fsockopen() does not even take a stream_context, but that fopen() now does, and none of this would do me any good at all... I guess I was thinking that the magic of fopen() being able to handle all those protocols had been bundled into the streams code, and that I ought to be able to utilize that somehow WITH a timeout on the connection. I guess I'm stuck with re-coding all the stuff from fopen() in a giant PHP switch and using my old-school fsockopen, just so I can have control over connection timeout. :-( And it looks like all the new streams stuff is very nifty for some things, but rather useless for the feature that I believe quite a few users have been asking for: Gimme fopen() with control over timeout, so I can ignore all the minutia of what kind of file/stream/URL/whatever I'm reading, but not have my application waiting for 2 minutes when somebody else's server goes down. I tried to open a "Feature Request" to this, but it's already been closed as "Bogus" wherein I was told to rtfm. I've re-opened it, but based on my past mixed experience with the people behind bugs.php.net, I figure I've only got a 50/50 chance of somebody who actually reads and comprehends what I typed seeing it before it gets closed again and ignored. :-( Don't get me wrong -- I know what a monumental task they face, and am aware that there are certain Pavlovian automatic reactions, and that's how it is when they see the keywords embedded in my Change Request, so I'm not dis-ing them... It's just Reality that a worthy feature worth considering is probably going to get buried in the Bogus pile. [shrug] If anybody reading this actually agrees with me, feel free to vote here: http://bugs.php.net/bug.php?id=36072 If you think I'm an idiot, by all means vote against the feature request. -- Like Music? http://l-i-e.com/artists.htm -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php