执行、获取远程代码返回:file

气候终于晴了,但难题来了。在促成五个站点间顾客数量同步,当使用php函数
file_get_contents抓取试行长途页面时,假设总是超时将会输出叁个Fatal
Error或一定的慢,结果变成下边的代码不能够运转。先明白一下PHP
file_get_contents() 函数
概念和用法 file_get_contents(卡塔尔 函数把方方面面文件读入三个字符串中。
和 file() 同样,分化的是 file_get_contents(State of Qatar 把公文读入七个字符串。
file_get_contents(卡塔尔函数是用以将文件的内容读入到叁个字符串中的首荐办法。如若操作系统扶助,还也许会采纳内部存款和储蓄器映射技艺来加强品质。
语法 file_get_contents(path,include_path,context,start,max_length)参数
描述
path 必得。规定要读取的公文。
include_path 可选。假如也想在 include_path
中找找文件的话,能够将该参数设为 “1”。
context 可选。规定文件句柄的情形。
context 是意气风发套能够改正流的一坐一起的选项。若使用 null,则忽视。
start 可选。规定在文书中领头读取的职位。该参数是 PHP 5.1 新加的。
max_length 可选。规定读取的字节数。该参数是 PHP 5.1 新加的。
说明 对 context 的支撑是 PHP 5.0.0 增多的。
本着超时或页面过慢,一般可使用七个缓慢解决方案:

一. 利用file_get_contents(卡塔尔国第2个参数
复制代码 代码如下:
$url = “”;     
$ctx = stream_context_create(array(     
‘http’ => array(‘timeout’ => 10)     
    )     
    );     
$result = @file_get_contents($url, 0, $ctx);     
if($result){     
        var_dump($result);     
    }else{     
echo ” Buffer is empty”;     
    }     
?>  

函数

此措施1,笔者经测量检验在本地反映不错,但借使在外网测量试验(境遇:中夏族民共和国→United States劳动器间)基本都以逾期的场所。
测量试验了TimeOut基本未有用了,建议以下办法

二. 使用curl扩展库
复制代码 代码如下:
$url = “”;     
try {     
echo date(‘Y-m-d h:i:s’);     
echo “”;     
//$buffer = file_get_contents($url);   
$buffer = zhoz_get_contents($url);     
echo date(‘Y-m-d h:i:s’);     
if(emptyempty($buffer)) {     
echo ” Buffer is empty”;     
        } else {     
echo ” Buffer is not empty”;     
        }     
    } catch(Exception $e) {     
echo “error “;     
    }     
澳门新葡萄京官网首页,function zhoz_get_contents($url, $second = 5) {     
$ch = curl_init();     
        curl_setopt($ch,CURLOPT_URL,$url);     
        curl_setopt($ch,CURLOPT_HEADER,0);     
        curl_setopt($ch,CURLOPT_TIMEOUT,$second);     
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);     
$content = curl_exec($ch);     
        curl_close($ch);     
return $content;     
    }     
?>

 代码如下

综述,依据系统遭遇来筛选到底应用哪一种办法:
复制代码 代码如下:
function vita_get_url_content($url) {  
if(function_exists(‘file_get_contents’)) {  
$file_contents = file_get_contents($url);  
} else {  
$ch = curl_init();  
$timeout = 5;  
curl_setopt ($ch, CURLOPT_URL, $url);  
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
$file_contents = curl_exec($ch);  
curl_close($ch);  
}  
return $file_contents;  
}  
?> 

/**
 * 获取远程url的源委
 * @param string $url
 * @return string
 */
function get_url_content($url) {
  if(function_exists(curl_init)) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt ($ch,
CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt ($ch, CURLOPT_TIMEOUT, $timeout);
     
    $file_contents = curl_exec($ch);
    curl_close($ch);
  } else {
    $file_contents = file_get_contents($url);
  }
 
  return $file_contents;
}

调用方法

 代码如下

$url = ”;
$a = get_url_content($url);
echo $a;

地点只是一个简易的实例,假使大家想使用可参看笔者要好写的收集程序了。

1,获取指标网页数据;
2,截取相关内容;
3,写入数据库/生成HMTL文件;
上面就遵照步骤来试试看!
获取指标网页数据
1,
分明好,要收获的网页地址竟然方式,这里大家利用的网站是:/index.html?pageconfig=catalog_byproducttype&intProductTypeID=1&strStartChar=A&intResultsPage=1&tr=59
其风流浪漫页面是有分页的,依照原理,大家找到只须求改造page参数就足以翻页!即:

小编 们的网页格局是:/index.html?pageconfig=catalog_byproducttype&
amp;intProductTypeID=1&strStartChar=A&intResultsPage= NUMBER &tr=59

戊辰革命部分是当前页码对应值!只须求转移该值就足以了!

2,获取页面内容:自然要用到PHP函数了!这里,四个函数都足以!他们各自是:

file_get_contents(State of Qatar 把方方面面文件读入三个字符串中。和 file(State of Qatar同样,不相同的是file_get_contents()把文件读入三个字符串。file_get_contents(卡塔尔国函数是用以将文件的原委读入到一个字符串中的首荐办法。假设操作系统扶持,还大概会接受内部存款和储蓄器映射本事来升高品质。语法:
file_get_contents( path ,
include_path , context ,
start , max_length 卡塔尔 curl(State of Qatar通晓详细,请参阅官方网址文书档案:
fopen(卡塔尔国函数打开文件恐怕U福特ExplorerL。假若打开退步,本函数再次回到 FALSE。语法:
fopen(filename,mode,include_path,context卡塔尔国当然,大家选拔的是第贰个!其实,全体的都差不离,有意思味的娃子可以常识常识其余的!

 代码如下

<?php
$oldcontent =
file_get_contents(“);
echo $oldcontent;
?>

运作PHP程序,上边的代码能够显示出全方位网页!由于原网页接纳的是绝地路线,所未来后来得的效应和原先的是如出一辙的!
接下去就是要,截取内容了!截取内容的方法也许有不胜枚举,后天牵线的一种比较轻巧:

 代码如下

<?php
$oldcontent =
file_get_contents(“);
$oldcontent;
$pfirst = ‘<table border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr> <th style=”padding-left: 0px;”><p
style=”font-size:12px”><strong>Code</strong></p></th>’;
$plast = ‘Goat polyclonal’;
$b= strpos($oldcontent,$pfirst);
$c= strpos($oldcontent,$plast);
echo
substr($oldcontent,$b,$c-1);
?>

出口的,即为所急需的结果!
写入数据库和写入文件都以比较轻松的!这里就写入文件了!

 代码如下

<?php
$oldcontent =
file_get_contents(“index.html?pageconfig=catalog_byproducttype&intProductTypeID=1&strStartChar=A&intResultsPage=2&tr=59″);
$oldcontent;
$pfirst = ‘<table border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr> <th style=”padding-left: 0px;”><p
style=”font-size:12px”><strong>Code</strong></p></th>’;
$plast = ‘Goat polyclonal’;
$b= strpos($oldcontent,$pfirst);
$c= strpos($oldcontent,$plast);
$a = substr($oldcontent,$b,$c-1);
$file = date(‘YmdHis’).”.html”;
$fp = fopen($file,”w+”);
if(!is_writable($file)){
die(“File “.$file.” can not be written”);
}
else {
file_put_contents($file, $a);
echo “success”;
}
fclose($fp);
?>

OK,继续上班,今天的截取就到那边,下一次就说说正则表明式领到内容

发表评论

电子邮件地址不会被公开。 必填项已用*标注