Hello,

I wonder if anyone can help me with a problem I have.  I have some sites
hosted on a Cobalt Raq4 server (not sure if this is relevant).  I recently
upgraded PHP from a package at www.pkgmaster.com, and since making this
upgrade I have problems with PHP that I cannot find the solution to.

I have conacted their 'team' who have thus far offered no explanation,
saying it must be something else causing these issues with PHP, but I
haven't made any more changes, just installed the new PHP version.

The problems are with the mail() function taking an AGE to excecute, and
environmental HTTP header information not being sent/recieved by getenv().

Some examples follow..

For example, as an extremely basic example of the mail function going slow,
this simple script:
<?
mail("[EMAIL PROTECTED]", "Test subject", "Test message");
print "finished!";
?>

Which can be found at http://www.clicktolearn.co.uk/test/mail.php in action,
ran (as it should do) extremely fast the week before I made the upgrade from
the packages.  Now, as you will see, it runs dog slow.

Secondly, the following script shows the lack of headers:
http://www.clicktolearn.co.uk/test/  (click the link, so there's a referer
to the script page)...

<?
function get_http_headers($url, $proto="HTTP/1.0", $timeout=10) {
        $return = false;
        if (substr($url,0,7)=="http://";) {
                $url = substr($url,7);
        }

        $parts = parse_url("http://".$url);

        $ips = gethostbynamel($parts["host"]);

        if ($ips[0]) {
                $ip = $ips[0];
                $host = $parts["host"];
                $path = ($parts["path"]) ? $parts["path"] : "/";
                $port = ($parts["port"]) ? $parts["port"] : 80;

                $start = time();
                $timeout = $timeout + $start;

                if($sock = fsockopen($host, $port)) {
                        set_socket_blocking($sock, 0);
                        switch($proto) {
                                case "HTTP/1.1":
                                        set_socket_blocking($sock, 1);
                                        fputs($sock, sprintf("HEAD %s %s\n",
$path, $proto));
                                        fputs($sock, sprintf("Host: %s\n\n",
$host));
                                        break;
                                default:
                                        fputs($sock, sprintf("HEAD %s
%s\n\n", $path, $proto));
                                }

                        while(!feof($sock) && $t<$timeout) {
                                $line .= fgets($sock,1);
                                $t = time();
                        }
                        fclose($sock);
                        $end = time();

                        if ($t>=$timeout) {
                                $http = parse_output($line);
                                $http["result"] = 502;
                                $http["message"] = "Timed Out";
                                $http["time_used"] = $end - $start;
                                $return = $http;
                        } elseif($line) {
                                $http = parse_output($line);
                                $http["time_used"] = $end - $start;
                                $return = $http;
                        }
                }
        }
        return $return;
}

function parse_output($line) {
        $lines = explode("\n", $line);
        if(substr($lines[0],0,4)=="HTTP") {
        list($http["protocol"], $http["result"], $http["message"]) =
split("[[:space:]]+",$lines[0],3);
        } else if(substr($lines[0],0,7)=="Server:") {
                $http["server"] = substr($lines[0],8);
        }
        for ($i=1; $i<count($lines); $i++) {
                list($key, $val) = split(":[[:space:]]*", $lines[$i],2);
                $key = strtolower(trim($key));
                if ($key) {
                        $http[$key] = trim($val);
                } else {
                        break;
                }
        }
        return($http);
};
var_dump(getallheaders());
print "<br><br>";
var_dump(get_http_headers('http://www.clicktolearn.co.uk/test/testheaders.ph
p'));
print "<br><br>";
print $HTTP_REFERER;
print "<br><br>";
print "<a href='Javascript: history.back();'>Back</a>";
print "<br><br>";
var_dump(getenv($HTTP_REFERER));
?>

Under the "Back" link is the output of: var_dump(getenv($HTTP_REFERER));
Now I know that this was working before the upgrade, as a log in script I
use on the main site uses getenv($HTTP_REFERER) to send them back to where
they came from.  This again worked 100% fine before PHP upgrade.

Sorry to take up your time, but there is a problem somewhere that has
certainly only begun with PHP since I upgraded to 4.1.2, and I dont know
what it could be!?

Thanks in advance.

Paul Mullett




-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to