WXforum.net
Web Weather => Weather Website PHP/AJAX scripting => Topic started by: anchorageweather on March 08, 2008, 07:52:55 AM
-
Strange?!?
The advisory script running here:
------------ Test Script removed - its working again --------------------
gets:
Warning: file(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /virtual/users/e14319-14509/web/station/advisory.php on line 45
Warning: file(http://www.crh.noaa.gov/showsigwx.php?warnzone=KYZ030&warncounty=KYC111): failed to open stream: Resource temporarily unavailable in /virtual/users/e14319-14509/web/station/advisory.php on line 45
Warning: implode(): Bad arguments. in /virtual/users/e14319-14509/web/station/advisory.php on line 45
However, the link in the "implode" line:
http://www.crh.noaa.gov/showsigwx.php?warnzone=KYZ030&warncounty=KYC111
seems to work fine.
The code seems to be working fine on other weather sites as well (Carter Lake, etc.)
It is the vanilla version at Carter Lake's site:
<?php
// Force Defaults for Zone and County
if ( ! isset($_REQUEST['warnzone']) )
$_REQUEST['warnzone']="KYZ030";
if ( ! isset($_REQUEST['warncounty']) )
$_REQUEST['warncounty']="KYC111";
if ( ! isset($_REQUEST['warnlocal']) )
$_REQUEST['warnlocal']="Anchorage";
//You can pass data to this script with:
// http://www.carterlake.org/testadvisory.php?warnzone=IAZ069&warncounty=IAC155&warnlocal=Carter+Lake
//Where the zone is your zone and the county is your county and location is your location
//using pluses in place of spaces
$warnzone = $_REQUEST['warnzone'];
$warncounty = $_REQUEST['warncounty'];
$warnlocal = $_REQUEST['warnlocal'];
//import NOAA Advisory info
//data can be altered by changing the zone and county numbers
//Target data ends up in $targetwarn and $targettext[0]
$html = implode('', file("http://www.crh.noaa.gov/showsigwx.php?warnzone=${warnzone}&warncounty=${warncounty}"));
//Get the advisory headers and put them in an array
preg_match_all('|<h3>(.*)</h3>|', $html, $headers);
$warnheaders = $headers[1];
//Get the advisory text and put them into an array as well
preg_match_all('|<pre>(.*)</pre>|Uis', $html, $headers);
$warntext = $headers[1];
//If there is more than one advisory, we need to set its priority
if (count($warnheaders) >= 1) {
$i = 0;
$flag = 0;
//First, around here tornados are the biggest danger. A warning is critical information.
//Display this one first no matter what!
while ($i < count($warnheaders)):
if (preg_match("/Tornado Warning/i", $warnheaders[$i])) {
$targetwarn = $warnheaders[$i];
$targettext = $warntext[$i];
$targettext = explode("$$",$targettext);
$flag = 1;
break;
}
$i++;
endwhile;
//Next if there are none of the above found. Display the first warning message.
if ($flag == 0) {
$i = 0;
while ($i < count($warnheaders)):
if (preg_match("/Warning/i", $warnheaders[$i])) {
$targetwarn = $warnheaders[$i];
$targettext = $warntext[$i];
$targettext = explode("$$",$targettext);
$flag = 1;
break;
}
$i++;
endwhile;
}
//Next if there are none of the above found. Display the first watch message.
if ($flag == 0) {
$i = 0;
while ($i < count($warnheaders)):
if (preg_match("/Watch/i", $warnheaders[$i])) {
$targetwarn = $warnheaders[$i];
$targettext = $warntext[$i];
$targettext = explode("$$",$targettext);
$flag = 1;
break;
}
$i++;
endwhile;
}
//Next if there are none of the above found. Display the first advisory message.
if ($flag == 0) {
$i = 0;
while ($i < count($warnheaders)):
if (preg_match("/Advisory/i", $warnheaders[$i])) {
$targetwarn = $warnheaders[$i];
$targettext = $warntext[$i];
$targettext = explode("$$",$targettext);
$flag = 1;
break;
}
$i++;
endwhile;
}
//Next if there are none of the above found. Display the first statement message.
if ($flag == 0) {
$i = 0;
while ($i < count($warnheaders)):
if (preg_match("/Statement/i", $warnheaders[$i])) {
$targetwarn = $warnheaders[$i];
$targettext = $warntext[$i];
$targettext = explode("$$",$targettext);
$flag = 1;
break;
}
$i++;
endwhile;
}
//Next if there are none of the above found. Set the advisory to default message.
if ($targetwarn == "Hazardous Weather Outlook") {
$targetwarn = "NO CURRENT ADVISORIES";
$targettext[0] = "THERE ARE NO ACTIVE WATCHES, WARNINGS OR ADVISORIES";
} else if ($targetwarn == "No Active Hazardous Weather Conditions Found") {
$targetwarn = "NO CURRENT ADVISORIES";
$targettext[0] = "THERE ARE NO ACTIVE WATCHES, WARNINGS OR ADVISORIES";
} else if (empty($targetwarn)) {
$targetwarn = "NO CURRENT ADVISORIES";
$targettext[0] = "THERE ARE NO ACTIVE WATCHES, WARNINGS OR ADVISORIES";
} else if ($targetwarn == "Short Term Forecast") {
$targetwarn = "NO CURRENT ADVISORIES";
$targettext[0] = "THERE ARE NO ACTIVE WATCHES, WARNINGS OR ADVISORIES";
}
if ($targetwarn <> "NO CURRENT ADVISORIES") {
$warnlist = 'ALL CURRENT ADVISORIES:';
for ($i = 0; $i <= count($warnheaders); $i++) {
$warnheaderplus = preg_replace( '| |', '+', $warnheaders[$i] );
$warnlist = $warnlist . '<br><a href="http://www.crh.noaa.gov/showsigwx.php?warnzone=' . $warnzone. '&warncounty=' . $warncounty . '&local_place1=' . $warnlocal . '&product1=' . $warnheaderplus . '" target="_new">' . $warnheaders[$i] . '</a>';
}
}
}
echo "<b>";
echo $targetwarn;
echo "</b><br><br><pre>";
echo $targettext[0];
echo $warnlist;
echo "</pre>";
?>
I'm stumped?!?! Does anyone have any ideas? I'd like to keep using this script if possible, I've got the text colors, language, etc. tweaked to my liking :-(
-
Well, it seems to have fixed itself?!? I didn't change anything either :oops: I swear, sometimes I feel like my site is haunted or something. Sometimes the whole thing gets frustrating. I'm thinking I should pick a new hobby. Maybe rock collecting or something. ](*,)
P.S. My webcam is messed up now. On to the next crisis. :mad:
-
The problem wasn't with the script, it was with your hoster's webserver. The first message
Warning: file(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /virtual/users/e14319-14509/web/station/advisory.php on line 45
showed the webserver temporarily lost the ability to do a DNS lookup for www.crh.noaa.gov
The second message Warning: file(http://www.crh.noaa.gov/showsigwx.php?warnzone=KYZ030&warncounty=KYC111): failed to open stream: Resource temporarily unavailable in /virtual/users/e14319-14509/web/station/advisory.php on line 45
was a direct result of having the DNS problem shown in the first message.
When the DNS issue was resolved, stuff went back to working normally.
So.. nothing you did .. it was your hoster's problem and they got it fixed :)
Best regards,
Ken
-
The problem wasn't with the script, it was with your hoster's webserver. The first message Warning: file(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /virtual/users/e14319-14509/web/station/advisory.php on line 45
showed the webserver temporarily lost the ability to do a DNS lookup for www.crh.noaa.gov
The second message Warning: file(http://www.crh.noaa.gov/showsigwx.php?warnzone=KYZ030&warncounty=KYC111): failed to open stream: Resource temporarily unavailable in /virtual/users/e14319-14509/web/station/advisory.php on line 45
was a direct result of having the DNS problem shown in the first message.
When the DNS issue was resolved, stuff went back to working normally.
So.. nothing you did .. it was your hoster's problem and they got it fixed :)
Best regards,
Ken
Ken, thanks for taking a look and restoring some peace of mind! I thought I was going crazy. #-o