By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,627 Members | 2,244 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,627 IT Pros & Developers. It's quick & easy.

problem with fsockopen & fgets

P: n/a
I'm stuck on a problem with getting data from a XML data stream. This
stream is large and trying to use fsockopen to get the stream down.

I've tetsed the code by telneting into the machine/port but I am
getting some of the data but not all. I don't know the stream size.

Code snippit below:

function txrx($server, $port, $tx){
$rx = "";
if ($server == "") {
$rx = "Error - Missing Server";
}
if ($port == "") {
$rx = "Error - Missing Port";
}
$fp = fsockopen($server, $port);
if($fp) {
fputs($fp, $tx);
$rx .= fread($fp, 2048);
fclose($fp);
}
return $rx;

}
Any suggestions ?

Can you please post to the group and send me an e-mail at
34*****@gmail.com

Thanks
Colin Bell
Jul 17 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Colin Bell wrote:
I'm stuck on a problem with getting data from a XML data stream. This
stream is large and trying to use fsockopen to get the stream down.

I've tetsed the code by telneting into the machine/port but I am
getting some of the data but not all. I don't know the stream size.

Code snippit below:

function txrx($server, $port, $tx){
$rx = "";
if ($server == "") {
$rx = "Error - Missing Server";
}
if ($port == "") {
$rx = "Error - Missing Port";
}
$fp = fsockopen($server, $port);
if($fp) {
fputs($fp, $tx);
$rx .= fread($fp, 2048);
fclose($fp);
}
return $rx;

}
Any suggestions ?
Yes. you are only reading the first 2048 bytes. Look at this example FROM THE
DOCS and compare it to yours... the problem should be obvious...

<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";

fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>

Can you please post to the group and send me an e-mail at
34*****@gmail.com

Thanks
Colin Bell

--
Michael Austin.
Consultant - Available.
Donations welcomed. Http://www.firstdbasource.com/donations.html
:)
Jul 17 '05 #2

P: n/a
Hello,

On 08/20/2004 11:32 AM, Colin Bell wrote:
I'm stuck on a problem with getting data from a XML data stream. This
stream is large and trying to use fsockopen to get the stream down.

I've tetsed the code by telneting into the machine/port but I am
getting some of the data but not all. I don't know the stream size.


If this is being sent to an HTTP server, you need to follow the HTTP
protocol. In that case you may want to try this HTTP client class that
provides a way to send files either by emulating POST form uploading or
just by submiting the XML file in the request body.

http://www.phpclasses.org/httpclient
--

Regards,
Manuel Lemos

PHP Classes - Free ready to use OOP components written in PHP
http://www.phpclasses.org/

PHP Reviews - Reviews of PHP books and other products
http://www.phpclasses.org/reviews/

Metastorage - Data object relational mapping layer generator
http://www.meta-language.net/metastorage.html
Jul 17 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.