最近公司有个网站要先判断服务器上的网页是否可用,然后在把值提交到这个网页上。使用php来检测网页是否可用,没怎么接触过php,搞了两天,基本上是可以检测了。现把代码贴上:
<?php
//
$url = "http://blog.youkuaiyun.com/xuezhongsong/archive/2009/09/17/4561488.aspx";
$ctx = stream_context_create(array('http' => array('timeout' => 10)));
//获取网页内容
$result = @file_get_contents($url, 0, $ctx);
if($result){
echo "<Script language='JavaScript'> alert('成功!');</Script>";
}else{
echo "<script>alert('服务器繁忙,请稍后再试!'); </script>";
}
//以下是另一种方法判断服务器网页是否响应,但是当本页处理时间超时会有点问题。
/*$fp = fsockopen("localhost", 80, &$errno, &$errstr, 10);
socket_set_timeout($fp, 0, 10);
if(!$fp && socket_set_timeout($fp, 0, 10))
{
echo "<script>alert('服务器繁忙,请稍后再试!'); </script>";
}else{
$stream="";
fputs($fp,"GET /edulifebg.cn/SynEnrollData.asp HTTP/1.0/nHost: localhost/n/n Connection: close/r/n/r/n");
$i=0;
$inheader=1;
error_reporting(0);
while(!feof($fp) && $inheader){
$line = fgets($fp,1024);
//http请求的获取头部
if ($inheader && ($line == "/n" || $line == "/r/n")) {
$inheader = 0;
}
if ($inheader != 0) {
$stream.= $line;
}
}
echo $stream;
$mark=trimHeader($stream);
if($mark==200){
echo "<Script language='JavaScript'> alert('成功!');</Script>";
}else{
echo "<Script language='JavaScript'> alert('服务器繁忙,请稍后再试...!".$mark."');</Script>";
}
}
fclose($fp);
//获取HTTP状态码:200表示成功,400错误请求,服务器不理解请求的语法,404 服务器找不到请求的网页,503(服务不可用)服务器目前无法使用(由于超载或停机维护)等等
function trimHeader($content){
$array=split(" ",$content);
return trim($array["1"]);
}
*/
?>
PS:
PHP没有很好的异常捕获机制,不爽!对php不熟悉,怎么把错误获取到,然后自定义提醒呢!比如一个页面超时,不要显示php的提醒,而是自定义提醒。