Link to home
Start Free TrialLog in
Avatar of JayRitchie
JayRitchie

asked on

PHP script issue

Hi there experts!

Got a problem regarding my virtual server which is running CentOS 5.5 with webmin, all modules such as httpd, mysql, mysql-server all up-to-date.

I have a php script that interfaces with a virtual world called Second Life, the purpose of this script is to allow the webserver to interface with the secondlife script, which is set to listen for specific commands.

After trying multiple times, running a whole different distro of linux thinking that was the issue, i've came to a complete stop.

This php script works with a friends webserver, although running plesk and hosted for him by a hosting provider, i'm completely self hosted, his script works without a problem, yet when i attempt to do the same, the php page hangs for a long while (not crash style) then EVENTUALLY refreshes, like it completed the request...yet it hasn't.

Looking at the error_log i find nothing of issue, although my knowledge is rather limited so having alot of new eyes looking this over might show me the issue, and possible resolution.

Below is how i operate the script and what results i expect to have it achieve:

Webserver provides php page with a list of objects in second life, that have contacted the webserver with its, unique identifer masks, world location, time it last contacted etc.

I select one and check a box labelled set text and enter "Hello World", then hit send, which SHOULD have floating text above the object in secondlife with "Hello World"

Yet instead it hangs...then does nothing, my friends webserver using the same script, however does this and the changes becomes apparant immediately.

Here is what the URL looks like: (Friends webserver using plesk, has kindly provided phpinfo, though looks greek to me for the most part)

http://paintballpalmer.com/sls1/manageserver.php?xml=70b92dc6-0c4d-630e-b32f-c084e7c9adec&slcmd=st&settext=Hello+World+411&cmd=Send

^ - this would change the selected objects floating text, however when i use that on my webserver, changing the domain name to an IP (no domain name hosting, just IP) the hang occurs.

Not sure what else to provide, however if you require anything else then i will gladly give the information, there may be some delay between responses due to work related matters, yet i do check in regularly so do not think i'm...how to put it....not serious about this or something, because i very much am.

Hope to hear from you all soon experts!

P.S - to further the possible understanding to resolution, i have provided the code for the servers.php of my server to see if there is any obvious issues i may have overlooked.


<?
session_start();

if (empty($_SESSION['user']))
{
    header("location:login.php");
}
include("lib/_mysql.php");
?>
<?

function do_xml_post($data_channel, $data_int, $data_string)
{
    $service_port = getservbyname('www', 'tcp');
    $address = gethostbyname('xmlrpc.secondlife.com');
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    $result = socket_connect($socket, $address, $service_port);

    $data = "<?xml version=\"1.0\"?><methodCall><methodName>llRemoteData</methodName><params><param><value><struct><member><name>Channel</name><value><string>$data_channel</string></value></member><member><name>IntValue</name><value><int>$data_int</int></value></member><member><name>StringValue</name><value><string>$data_string</string></value></member></struct></value></param></params></methodCall>";

    $in = "POST /cgi-bin/xmlrpc.cgi HTTP/1.1\r\n";
    $in .= "Accept: */*\r\n";
    $in .= "Accept-Language: en-gb\r\n";
    $in .= "Cache-control: no-cache\r\n";
    $in .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $in .= "Host: xmlrpc.secondlife.com\r\n";
    $in .= "Content-Length: " . strlen($data) . "\r\n\r\n";
    $in .= $data;
    socket_write($socket, $in, strlen($in));
    socket_close($socket);
}

if ($_GET['cmd'] == "del")
{
    $idtodelete = $_GET['id'];
    $getsql = "DELETE FROM `sls_servers` WHERE sid=$idtodelete";
    $getqry = mysql_query($getsql) or die(mysql_error());
} else if ($_GET['cmd'] == "Send")
{
    $select = $_REQUEST['select'];
    $slcmd = $_GET['slcmd'];
    if ($_GET['sendall'] == "yes")
    {
        if ($slcmd == "kill")
        {
            $integer_var = 1;
        } else if ($slcmd == "reset")
        {
            $integer_var = 2;
        } else if ($slcmd == "st")
        {
            $string_var = $_GET['settext'];
            $integer_var = 6;
        } else if ($slcmd == "store")
        {
            $integer_var = 3;
        } else if ($slcmd == "disable")
        {
            $integer_var = 4;
        } else if ($slcmd == "enable")
        {
            $integer_var = 5;
        }
        $getsql = "SELECT sxml FROM `sls_servers`";
        $getqry = mysql_query($getsql) or die(mysql_error());
        while ($row = mysql_fetch_assoc($getqry))
        {
            do_xml_post($row['sxml'], $integer_var, $string_var);
        }
        echo "OK.";
        if ($integer_var == 1)
        {
            $getsql = "TRUNCATE TABLE sls_servers";
            $getqry = mysql_query($getsql) or die(mysql_error());
        }
    } else
    {
        if ($slcmd == "kill")
        {
            $integer_var = 1;
            $idtodelete = $_GET['select[]'];
            $getsql = "DELETE FROM `sls_servers` WHERE `sxml`='$idtodelete'";
            $getqry = mysql_query($getsql) or die(mysql_error());
        } else if ($slcmd == "reset")
        {
            $integer_var = 2;
        } else if ($slcmd == "st")
        {
            $string_var = $_GET['settext'];
            $integer_var = 6;
        } else if ($slcmd == "store")
        {
            $integer_var = 3;
        } else if ($slcmd == "disable")
        {
            $integer_var = 4;
        } else if ($slcmd == "enable")
        {
            $integer_var = 5;
        }
        /*
         * This is so that all the checked servers get the message
         */
        foreach ($select as $selectname)
        {
            do_xml_post($selectname, $integer_var, $string_var);
        }
    }
} else if ($_REQUEST['cmd'] == "store")
{
	$serverstable = "sls_servers";
    $slsname = $_GET['name'];       // Name of the object
    $slskey = $_GET['key'];         // The sl UUID of the obj
    $slsregion = $_GET['region'];   // Name of the Region containing the obj
    $slsxml = $_GET['xml'];         // XML-RPC "channel"
    $slspos = $_GET['pos'];         // Vector position of the obj
    $slstime = $_GET['time'];       // Time in secs since unix epoch
    $slsid = $_GET['id'];           // Random ID generated by the object
    //The following lines add the
    $getsql = "REPLACE INTO `" . $serverstable . "` (`sname`, `skey`, `sxml`, `sregion`, `spos`, `stime`, `sid`) VALUES ('" . $slsname . "', '" . $slskey . "',  '" . $slsxml . "', '" . $slsregion . "', '" . $slspos . "', '" . $slstime . "', '" . $slsid . "')";
    $getqry = mysql_query($getsql) or die(mysql_error());
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title> SLSM &nbsp; :|: &nbsp; V1.5 </title>
        <!-- Javascript - Fix the flash of unstyled content -->
        <script type="text/javascript"></script>
        <script type="text/javascript" src="jquery-1.4.min.js"></script>
        <script type="text/javascript">
            function FillForm(xml) {
                $("#xmlrpc").val(function(i, v)
                { return xml });
            }
        </script>

        <!-- Stylesheets -->
        <link href="css/reset.css" rel="stylesheet" type="text/css" media="all" />
        <link href="css/default.css" rel="stylesheet" type="text/css" media="screen" />
        <link href="css/styling.css" rel="stylesheet" type="text/css" media="screen" />
        <!-- Print Stylesheet -->
        <link href="css/print.css" rel="stylesheet" type="text/css" media="print" />

        <!-- Meta Information -->
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
        <meta http-equiv="imagetoolbar" content="no" />
        <meta http-equiv="cache-control" content="public" />
        <meta http-equiv="pragma" content="no-cache" />
        <meta http-equiv="expires" content="never" />
        <meta name="language" content="en-gb" />
        <meta name="MSSmartTagsPreventParsing" content="true" />
        <meta name="robots" content="index, follow" />
        <meta name="revisit-after" content="14 days" />
        <meta name="author" content="Mitchell Bryson" />

        <meta name="keywords" content="" />
        <meta name="description" content="" />

    </head>
    <body>

        <div id="container">
            <div id="header">
                <div id="header-in">
                    <?php include "lib/header.php"; ?>
                </div> <!-- end #header-in (provides padding)-->
            </div> <!-- end #header -->

            <div id="content-wrap" class="clear lcol">
                <div class="column">
                    <div class="column-in">
                        <?php include "lib/nav.php"; ?>
                    </div> <!-- end .column-in -->
                </div> <!-- end .column -->

                <div class="content">
                    <div class="content-in">
                        <h1> Server Management</h1>
                        <form action="" method="get" enctype="application/x-www-form-urlencoded" name="form1" id="form1">
                            <?
                            $getsql = "SELECT * FROM `sls_servers`";
                            $getqry = mysql_query($getsql) or die(mysql_error());
                            if (mysql_num_rows($getqry) > 0)
                            {
                                echo "<table width='100%' border='1'>";
                                echo "<td>ID</td>";
                                echo "<td>Server Name</td>";
                                echo "<td>Key</td>";
                                echo "<td>Region</td>";
                                echo "<td>Position</td>";
                                echo "<td>Last Seen</td>";
                                echo "<td>Select</td>";
                                $res = $getqry;
                                while ($row = mysql_fetch_assoc($res))
                                {
                                    $slsid = $row['sid'];
                                    $slsname = $row['sname'];
                                    $slskey = $row['skey'];
                                    $slsregion = $row['sregion'];
                                    $slspos = $row['spos'];
                                    $stime = $row['stime'];
                                    $slsxml = $row['sxml'];

                                    $offset = (time() + 480) - $stime;
                                    $slstime = round(($offset) / 60, 2);

                                    //echo vars . php . get("checkInTime");

                                    //if ($offset > vars . php . get("checkInTime") + 60)
                                    //{
                                    //    $getsql = "DELETE FROM `sls_servers` WHERE `sid` = '$slsid'";
                                    //    $getqry = mysql_query($getsql) or die(mysql_error());
                                    //} else
                                    //{
                                        echo "<tr>\n";
                                        echo "<td>$slsid</td>\n";
                                        echo "<td>$slsname</td>";
                                        echo "<td>$slskey</td>";
                                        echo "<td>$slsregion</td>";
                                        echo "<td>$slspos</td>";
                                        echo "<td>$slstime min</td>";

                                        //echo "<td><a href=\"#\" onClick=\"javascript:FillForm('" . $slsxml . "');return false;\"><img src=\"img/tick.gif\" border=\"0\"></a></td>\n";
                                        //echo "<td> <button onClick=\"javascript:FillForm(\'hehe\');return false;\">Input</button></td>";
                                        echo "<td><center><input type=\"checkbox\" name=\"select[]\" value='" . $slsxml . "'/></center></td>";
                                        //echo "<td><a href=\"servers.php?cmd=del&id=$slsid\" OnClick=\"return confirm('Are you sure you want to delete $slsname? The server will be unavailable until it next syncronises.');\"><img src=\"img/cross.gif\" border\"0\"></a></td>";
                                        echo "</tr>";
                                    }
                                //}
                                echo "</table>";
                            } else
                            {
                                echo "No servers.";
                            }
                            ?>

                            <p>Server Options</p>
                            <p>
                                <!--<label for="id">RPC Channel</label>
                                <input name="xml" type="text" id="xmlrpc" readonly="readonly" />-->

                                <label>
                                    <input type="radio" name="slcmd" value="kill" id="RadioGroup1_0" />
                                    Kill - Warning: This will destroy the object!</label>
                                <br />

                                <label>
                                    <input type="radio" name="slcmd" value="reset" id="RadioGroup1_1" />
                                    Reset</label>
                                <br />

                                <label>
                                    <input type="radio" name="slcmd" value="disable" id="RadioGroup1_1" />
                                    Disable</label>
                                <br />

                                <label>
                                    <input type="radio" name="slcmd" value="enable" id="RadioGroup1_1" />
                                    Enable</label>
                                <br />

                                <label>
                                    <input type="radio" name="slcmd" value="store" id="RadioGroup1_2" />
                                    Update Information</label>
                                <br />

                                <label>
                                    <input type="radio" name="slcmd" value="st" id="RadioGroup1_2" />
                                    Set Text</label>

                                <label>
                                    <input type="text" name="settext" id="settext" />
                                </label>
                            </p>
                            <label>
                                <input type="checkbox" name="sendall" value="yes" id="sendall_0" />
                                Send to All (May take a while)</label>
                            <br />
                            <label for="submit"></label>
                            <input type="submit" name="cmd" id="cmd" value="Send" />
                        </form>
                        <p>&nbsp;</p>
                    </div> <!-- end .content-in -->
                </div> <!-- end .content -->
            </div> <!-- end #content-wrap
            <div class="clear"></div>-->
            <div id="footer">
                <div id="footer-in">
                    <?php include "lib/footer.php"; ?>
                </div> <!-- end #footer-in -->
            </div> <!-- end #footer -->
        </div> <!-- end div#container -->
    </body>
</html>

Open in new window

Avatar of JayRitchie
JayRitchie

ASKER

Oh in addition, my server is the following:

http://81.19.212.250/

Default, login credentials

User: Admin
Pass: 1234

Not sure if this is appropriate yet i'm really wanting to understand this issue, because it has stumped me for quite a while, so trying to give you all as much understanding as possible, next step would probably be screenshots!

Thanks again!
Hi,

"Completely self hosted", error only occurring with numeric IP address URL and script doing a lot of gethostbyname() would point to a DNS configuration issue on the server. Tried the service with the provided link, and it seemed very responsive and snappy, though. Is this issue still ongoing?
Yes, the issue is very much ongoing.

If it requires the need for a domain name then i should be able to set it up with one, however would have thought that numeric IP address URL's would be sufficient.

Isn't there a way to have it use just the IP address as the URL, or is it because of this lack of domain name that is causing it.

The IP address link to the web interface, brings it up fine, however once you login with the default credentials, select a server on the list, and try and either set text or any other option and click send, the PHP script hangs.
Hi,

As a general solution to "I'm not sure which part is causing the delay" problems, I suggest the following test method.

On the first line, place this:
  $starttime = microtime(true);

After suspicious commands (or every line if unsure), paste this line:
 echo "Runtime : ".round(microtime(true)-$starttime,3)." seconds, current line: ".__LINE__."<br />\n";

This should give you a nice printout of the timed script run and point the slow parts.
Oh,

And there should be no need to register a domain name for the host. It's just that if there's no DNS reverse available and gethostbyname calls are used, the "no name available" responses might cause unexpected behaviour. The lack of reverse/domain nome should also be noted when configuring Apache.

Also, you might want to test by commenting out the "getservbyname" and "gethostbyname" functions and just giving it the real IP address and default HTTP port 80 instead.

- Jarkko
Ah,

Well i'm not exactly competent with PHP just yet, however i'll try those steps when at the server and see what the outcome is.

In regards to Apache being configured for lack of reverse/domai names, what configuration would i modifying to show this, httpd.conf or something else, and what specifically would i be modifying?

Cheers
Ok,

I re-read the original issue and realised that the delay doesn't occur between your client and your server but instead only when the server is trying to issue the HTTP request with xmlrpc.secondlife.com. Therefore your Apache configuration should be fine.

The timing test should give a clue on where to look. The most likely sure-fire solution would be to replace the custom TCP communication and self-monitored socket operations with tried-and-tested CURL functions, but let's see the timing results and error messages first.
Alright, sounds like a plan.

I'll put that timing test in and see what turns up, just to confirm i'm putting:

echo "Runtime : ".round(microtime(true)-$starttime,3)." seconds, current line: ".__LINE__."<br />\n";

after every suspect line in the code snippet attached with my original question?
Hi,

Yeah, that should give an idea of what's going on. The site xmlrpc.secondlife.com resolves into four different IP addresses: 216.82.16.12, 216.82.16.11, 216.82.16.14 and 216.82.16.13. The default is .12. I tested with a CURL implementation I found (attached) and the same request took 80(!) seconds on the default server, whereas calling .13 directly (as in supplying the real IP instead of the hostname) the same request went through in 12 seconds. Maybe this could be a solution?


<?
function sendrpc($chan, $intval, $strval, $url) {
  $req = xmlrpc_encode_request(
    "llRemoteData",
    array(
      "Channel"=>(string)$chan, 
      "IntValue"=>(int)$intval, 
      "StringValue"=>(string)$strval
    )
  );
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $reply = curl_exec($ch);
  curl_close($ch);

  $replyVars = xmlrpc_decode($reply);
  return $replyVars;
}

// Time limit needs to be big because of the first server being slow
set_time_limit(90);

// Hosts to test with
$urls = array(
  "http://xmlrpc.secondlife.com/cgi-bin/xmlrpc.cgi",
  "http://216.82.16.13/cgi-bin/xmlrpc.cgi"
);

foreach($urls as $url) {
  $starttime = microtime(true);
  sendrpc($url, "70b92dc6-0c4d-630e-b32f-c084e7c9adec", "st", "test");
  echo "Completed using $url in ".round(microtime(true)-$starttime,3)." seconds.<br />";
}
?>

Open in new window

Really!?

I'll definately be looking into this when i get to the server later, was reading about CURL implementation but as with untested languages, i'm rather hesitant, but i'll look into that definately, will get back to you once i've tested this out!

All i know is that when i tried sending the information, while it took forever, the data actually never went through, as the float text above the in-world (secondlife) object never changed, so hopefully this could resolve that as well.
Got the results of that microtime test here, put in the snippet to show where i placed the code

Results were:

Runtime : 1283885528.083 seconds, current line: 18
Runtime : 1283885721.033 seconds, current line: 20
Runtime : 1283885721.033 seconds, current line: 22
Runtime : 1283885721.033 seconds, current line: 32
Runtime : 1283885721.033 seconds, current line: 34

Will attempt something in regards to the curl code you posted now.
<?
$starttime = microtime(true);
session_start();

if (empty($_SESSION['user']))
{
    header("location:login.php");
}
include("lib/_mysql.php");
?>
<?

function do_xml_post($data_channel, $data_int, $data_string)
{
    $service_port = getservbyname('www', 'tcp');
    $address = gethostbyname('xmlrpc.secondlife.com');
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
echo "Runtime : ".round(microtime(true)-$starttime,3)." seconds, current line: ".__LINE__."<br />\n";
    $result = socket_connect($socket, $address, $service_port);
echo "Runtime : ".round(microtime(true)-$starttime,3)." seconds, current line: ".__LINE__."<br />\n";
    $data = "<?xml version=\"1.0\"?><methodCall><methodName>llRemoteData</methodName><params><param><value><struct><member><name>Channel</name><value><string>$data_channel</string></value></member><member><name>IntValue</name><value><int>$data_int</int></value></member><member><name>StringValue</name><value><string>$data_string</string></value></member></struct></value></param></params></methodCall>";
echo "Runtime : ".round(microtime(true)-$starttime,3)." seconds, current line: ".__LINE__."<br />\n";
    $in = "POST /cgi-bin/xmlrpc.cgi HTTP/1.1\r\n";
    $in .= "Accept: */*\r\n";
    $in .= "Accept-Language: en-gb\r\n";
    $in .= "Cache-control: no-cache\r\n";
    $in .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $in .= "Host: xmlrpc.secondlife.com\r\n";
    $in .= "Content-Length: " . strlen($data) . "\r\n\r\n";
    $in .= $data;
    socket_write($socket, $in, strlen($in));
echo "Runtime : ".round(microtime(true)-$starttime,3)." seconds, current line: ".__LINE__."<br />\n";
    socket_close($socket);
echo "Runtime : ".round(microtime(true)-$starttime,3)." seconds, current line: ".__LINE__."<br />\n";
}

if ($_GET['cmd'] == "del")
{
    $idtodelete = $_GET['id'];
    $getsql = "DELETE FROM `sls_servers` WHERE sid=$idtodelete";
    $getqry = mysql_query($getsql) or die(mysql_error());
} else if ($_GET['cmd'] == "Send")
{
    $select = $_REQUEST['select'];
    $slcmd = $_GET['slcmd'];
    if ($_GET['sendall'] == "yes")
    {
        if ($slcmd == "kill")
        {
            $integer_var = 1;
        } else if ($slcmd == "reset")
        {
            $integer_var = 2;
        } else if ($slcmd == "st")
        {
            $string_var = $_GET['settext'];
echo "Runtime : ".round(microtime(true)-$starttime,3)." seconds, current line: ".__LINE__."<br />\n";
            $integer_var = 6;
echo "Runtime : ".round(microtime(true)-$starttime,3)." seconds, current line: ".__LINE__."<br />\n";

Open in new window

Hi,

Looks like you forgot to initialize the starttime variable at the beginning of the script with
$starttime = microtime(true);
That would explain the high, descending numbers.

But the in-between times would indeed point to a slow server - shouldn't take 7 seconds for socket_connect() to finish.
Sorry about that, updated it and it shows a more realistic number, same code position as before, results are:

Runtime : 0.003 seconds, current line: 19
Runtime : 193.04 seconds, current line: 21
Runtime : 193.04 seconds, current line: 23
Runtime : 193.041 seconds, current line: 33
Runtime : 193.041 seconds, current line: 35

So yeah....quite a long while, think it might be a socket connect issue...although thats just me assuming.
ASKER CERTIFIED SOLUTION
Avatar of absx
absx
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Pasted that script in to the servers.php, replacing the function_do_xml_post part, and the page just doesn't load at all, just hangs completely, seriously starting to think i'm missing some sort of module....or extension...or its blocked in some way...switched off the firewall and it still doesn't work properly.

This is the issue i had the last time...it just...freezes...does nothing, the inworld script is fine...just...the php part is the issue, i know THAT much.
After having a friend look at it and manage to get it to work in windows apache, i ported it over to linux and the same issue occurs, hanging page then it recovers and does nothing.

He made the suggestion i might have a socket connection issue, and to look for php_sockets.so...or something to that effect....i cannot find that at all...would i be on the right track by assuming this, and if so, where do you normally acquire such a file?
Hi,

It would seem that if I disable the XMLRPC extension for PHP, the execution stops early and without errors with my example. So, installing the XMLRPC extension and switching the function to the CURL one I pasted earlier might be a solution.

- Jarkko
The XMLRPC extension was already installed, I have a phpinfo file at http://81.19.212.250/sockettest.php . Tried your latest curl code you pasted and it just freezes the entire period, your previous curl code snippet to that, executes fine. Just seems like one problem after another, rather disheartening.
Hi,

Someone else was having a similar problem with their CentOS, here: http://forums.cacti.net/about32844.html&highlight=

It would seem, though, that the sockets extension is included in the package php-common, along with CURL, according to http://www.centos.org/modules/newbb/viewtopic.php?topic_id=11747&forum=37

- Jarkko
Looking at my phpinfo file i found that when i yum installed php and curl, that -enable-sockets was used, so it would seem that for whatever reason my setup hates sockets connections, and your latest code snippet for the CURL example, however as i previously mentioned the previous CURL code snippet example worked...so something between those two just stops the page dead.
HI,

I'm afraid I've been busy elsewhere for a while. If the same code indeed works elsewhere, with similar Apache/PHP configurations (you've got "error_reporting = E_ALL" and "display_errors = on" in your php.ini, right?), it might be some kind of a firewall issue preventing the Apache process from creating sockets.

Simple test for this (live example for comparison at my server http://lolcathost.ath.cx/~absolut/test_socket.php):
<?php

$output = "";

$fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
if (!$fp) {
    $output .= "$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)) {
        $output .= fgets($fp, 128);
    }
    fclose($fp);
}
echo htmlentities($output);
?>

Open in new window

I've done it in the past with the firewall off, i'll try it again to see if it is actually that this time around.

Though if its not firewall related, then i'll be very confused as to why this is, will double check i have those error masks active.
Switched off iptables and ip6tables (just in case) and then turned on display errors and error_reporting and found the following.

Notice: Undefined index: sendall in /var/www/html/servers.php on line 47

Warning: socket_connect() [function.socket-connect]: unable to connect [110]: Connection timed out in /var/www/html/servers.php on line 17

Warning: socket_write() [function.socket-write]: unable to write to socket [32]: Broken pipe in /var/www/html/servers.php on line 31

I believe i saw this before yet i never got anywhere with it as it was really specific and resolutions were left to your imagination.
Yeah,

The connection timeout would indeed point towards some network connectivity problem.
Can you ping the server? Can you "telnet xmlrpc.secondlife.com 80" to open a TCP connection?

- Jarkko
Tried to telnet to xmlrpc.secondlife.com on port 80 with iptables off, doesn't connect, also tried to ping it with iptables off, again won't even ping it.

Seems like something is stopping it, even with firewalls off.
Ok,

Linux network administration is really not my area (I prefer to configure mine in GUI with Firestarter).
Maybe it'd be best to open another question on a different area for that and let this thread rest until fixed?

- Jarkko
Sure, will give that a try, see what can be found out.

Thanks!
Whilest this was an IP issue, which i had to get investigated, there was still socket issues left over, so this expert helped me by giving an alternative which was CURL, a new language i'm now looking into.

Many thanks!