php实现异步将远程链接上内容(图片或内容)写到本地的方法

正文实例陈说了php达成异步将远程链接上内容(图片或内容)写到本地的方法。分享给我们供大家参照他事他说加以考察,具体如下:

本文实例陈诉了PHP通过CU科雷傲L达成定期任务的图样抓取功效。分享给大家供大家仿效,具体如下:

/**
 * 异步将远程链接上的内容(图片或内容)写到本地
 *
 * @param unknown $url
 *      远程地址
 * @param unknown $saveName
 *      保存在服务器上的文件名
 * @param unknown $path
 *      保存路径
 * @return boolean
 */
function put_file_from_url_content($url, $saveName = 'tmp.png', $path = './Uploads/Tmp/') {
  // 设置运行时间为无限制
  set_time_limit ( 0 );
  $url = trim ( $url );
  $curl = curl_init ();
  // 设置你需要抓取的URL
  curl_setopt ( $curl, CURLOPT_URL, $url );
  // 设置header
  curl_setopt ( $curl, CURLOPT_HEADER, 0 );
  // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
  curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 );
  // 运行cURL,请求网页
  $file = curl_exec ( $curl );
  // 关闭URL请求
  curl_close ( $curl );
  // 将文件写入获得的数据
  $filename = $path . $saveName;
  $write = @fopen ( $filename, "w" );
  if ($write == false) {
    return false;
  }
  if (fwrite ( $write, $file ) == false) {
    return false;
  }
  if (fclose ( $write ) == false) {
    return false;
  }
  return $filename;
}

下文为诸位介绍多个PHP按时义务通过CU帕杰罗L图片的抓取例子,希望例子对大家扶助,基本思路正是通过多个UTiguanL连接,将富有图片的地址抓取下来,然后循环展开图片,利用文件操作函数下载下来,保存到本地,何况把图纸的alt属性也抓取下来,最终将数据保存到温馨多少库.

ca88,越多关于PHP相关内容感兴趣的读者可查看本站专项论题:《php
curl用法总括》、《PHP数组(Array)操作技术大全》、《PHP数据结构与算法教程》、《php程序设计算法总计》、《PHP数学运算本事总括》、《php正则表明式用法总计》、《PHP运算与运算符用法计算》、《php字符串(string)用法总计》及《php常见数据库操作技术汇总》

废话相当的少说,看程序就能够了然了,当中,要求利用PHP定期职分和PHP的八个第三方插件simple_html_dom.php
的使用,参考simple_html_dom的下载和使用.

企望本文所述对大家PHP程序设计有所援救。

<?php
 function getLink($url){
  include_once('simple_html_dom.php');
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_HEADER,false);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  $output = curl_exec($ch);
  curl_close($ch);
  $html = new simple_html_dom();
  $html->load($output);
 $links = array();
  $arr = array();
 $title = array();
  foreach($html->find('a') as $element){
   if(preg_match('#^\/content_[0-9]+_1\.html$#i',$element->href)){
      array_push($links,'//www.jb51.net'.$element->href);
  array_push($title,$element->title);
 }
 }
 $links = array_values(array_unique($links));
 $title = array_values(array_unique($title));
 $arr['links'] = $links;
 $arr['title'] = $title;
 return $arr;
 }
 function loadimg($url,$dirname){
 include_once('simple_html_dom.php');
 $ch = curl_init();
 curl_setopt($ch,CURLOPT_URL,$url);
 curl_setopt($ch,CURLOPT_HEADER,false);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 $output = curl_exec($ch);
 curl_close($ch);
 $html = new simple_html_dom();
 $html->load($output);
 $arr = array();
 foreach($html->find('img[w]') as $element){
  $image = $element->src;
 }
 $data = file_get_contents($image);
  $info = getimagesize($image);//获取图片信息,大小,格式
  switch($info[2]){
   case 1:
    $str = 'gif';
    break;
   case 2:
    $str = 'jpg';
    break;
   case 3:
    $str = 'png';
    break;
   default:
    continue;
    break;
  }
  if($info[1] < 10 || $info[0] < 10) continue;//图片太小,不是有价值的图片,跳过本次循环
  $filename = time().rand(1,999999).'.'.$str;
  if(!is_dir($dirname)){
   mkdir($dirname,0777,true);
  }
  $fp = fopen($dirname.$filename,'w');
  fwrite($fp,$data);
  fclose($fp);
  return $dirname.$filename;
}
 do{
  set_time_limit(0);
  ignore_user_abort();
  $img = getLink('//www.jb51.net/qutu_1.html');
  $count = count($img['links']);
  $arr = array();
  for($i=0;$i<$count;$i++){
  $arr[]=loadimg($img['links'][$i],'images/');
  }
  $img['url'] = $arr;
  echo '<br/>';
  $img['title'];
  $res = array();
  $len = count($img['title']);
  //重新将数据组装成我们常用的二维数组,方便数据的数据库处理
  for($i=0;$i<$len;$i++){
   $res[$i]['title'] = $img['title'][$i];
  $res[$i]['url'] = $img['url'][$i];
  }
  foreach($res as $item){
   echo '<img src='.$item["url"].'>'.$item["title"].'<br />';
  }
  $interval = 24*3600;
  sleep($interval);
  }while(true);
?>

相关文章

发表评论

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