Rene Fournier wrote:
On 19-Nov-08, at 12:52 PM, Nathan Rixham wrote:
Rene Fournier wrote:
Hi,
I have four identical command-line PHP scripts running, and each will
frequently fetch some data from another server via
file_get_contents(). By frequently, I mean on average, every second.
Periodically, one of the processes (command-line PHP scripts), will
fail on file_get_contents(), with the error message:
first thing that springs to mind is some form of hardware limitation,
quite sure it's not php - could be a firewall with flood protection
(or even your own isp's anti malware set-up)
to combat it try binding the outgoing request to a random ip each time
(if you have multiple ip's on the box) [context: socket -> bindto]
That could explain it, except that all the traffic is on the same LAN.
There's no firewall between Server A and Servers B and C.
next up (very unlikely) but possibly outgoing port conflict where the
previous local port is still closing whilst trying to be re-opened.
That's interesting. I will look into that.
to get an ideal fix though you'll want to move away from
file_get_contents() as you're not doing things
Yes, I've also read that CURL is preferred to file_get_contents for
reasons of performance and security. I'm going to try that too.
the most efficient way; HTTP/1.1 allows you to keep a port open and
make multiple requests through the same socket/connection, simply keep
the socket open and don't send a connection: close header after the
request. (i say simply but you'll be needing to make you're own, or
find a good, http handler that allows you to write raw requests and
decode the raw http responses that come back)
best of luck; feel free to post your code incase anything jumps out as
obvious.
I will let you know how it goes. Thanks for the advice!
...Rene
had another thought, it could be the web server you're requesting that
is locking up, not enough worker threads, running cpu high etc etc -
worth checking
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php