基于php實現(xiàn)七牛抓取遠程圖片
由于公司網(wǎng)站之前的用戶頭像都是存儲在自己的服務(wù)器上的,后來感覺管理不方便,新增加的用戶頭像都上傳到了七牛,為了方便統(tǒng)一管理,領(lǐng)導(dǎo)說把本地服務(wù)器的頭像全部遷移到了七牛。
1.梳理下思路
先判斷用戶的頭像是否在七牛,若不存在,本地如果有則抓取到七牛,然后進行批量抓取
2.七牛判斷圖片是否存在
/**
* 查看七牛url是否存在
* @param string $url
*/
function url_exists($url) {
require_once(COMMON_PATH."qiniu/rs.php");
require_once(COMMON_PATH."qiniu/http.php");
$parts=parse_url($url);
$bucket ;//桶
$key=substr($parts['path'], );//七牛文件名
//密鑰
$accessKey ;
$secretKey ;
Qiniu_SetKeys($accessKey, $secretKey);
$client = new Qiniu_MacHttpClient(null);
list($ret, $err) = Qiniu_RS_Stat($client, $bucket, $key);//查看單個文件信息
if ($err !== null) {
return false;
} else {
return true;
}
}
3.移動單個文件到七牛
/**
* 移動單個頭像到七牛
* @param string $remotePath 遠程文件在服務(wù)器上的物理地址
* @param string $qiniuPath 七牛文件地址
*/
function oneFetch($remotePath,$qiniuPath){
if(!$this->url_exists($qiniuPath) && file_exists($remotePath)){
require_once(COMMON_PATH."qiniu/rs.php");
require_once(COMMON_PATH."qiniu/http.php");
require_once(COMMON_PATH."qiniu/conf.php");
$client = new Qiniu_MacHttpClient(NULL);
/*$accessUrl 遠程文件訪問地址
*$bucket桶
*$key 存儲在七牛的文件名
*/
$ret = Qiniu_RS_Fetch($client,$accessUrl, $bucket, $key);
if($ret != NULL)
{
$errlog = 'fail.log';//寫錯誤日志
file_put_contents($errlog, "{$key}\n", FILE_APPEND);
}
else
{
var_dump($ret);
}
}else{
var_dump('已有頭像');
}
}
4.批量抓取
function t(){
header("Content-type: text/html; charset=utf-8");
set_time_limit(0);
$start = intval($_GET['num']);//開始位置
$str = '';
/*從數(shù)據(jù)庫查詢記錄*/
$link = mysql_connect("localhost", "root", "root") or die("error");
$db_selected = mysql_select_db("test", $link);
mysql_query ("SET NAMES UTF8");
$limit = 10;//每次查詢數(shù)
$sql = "SELECT * FROM test order by id desc limit {$start},{$limit}";
$result = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($result))
{
while($row=mysql_fetch_assoc($result)){
oneFetch($row['remotePath'], $row['qiniuPath']);
}
$start += 10;
$url = "/t?num={$start}";
$str = '已經(jīng)更新'.$start.'條<br />';
$str .= '<script>location.href="'.$url.'";</script>';//更新$limit條,跳轉(zhuǎn)防止腳本無響應(yīng)
}
else
{
echo '結(jié)束';
}
echo $str;
ob_flush();
flush();
sleep(2);
unset($sql,$result,$row);
}
以上內(nèi)容是基于php實現(xiàn)七牛抓取遠程圖片的全部內(nèi)容,希望大家喜歡。
相關(guān)文章
CentOS下搭建PHP環(huán)境與WordPress博客程序的全流程總結(jié)
這篇文章主要介紹了CentOS下搭建PHP環(huán)境與WordPress博客程序的全流程總結(jié),這里我們以Apache服務(wù)器程序和MySQL數(shù)據(jù)庫程序為例進行講解,需要的朋友可以參考下2016-05-05
Laravel監(jiān)聽數(shù)據(jù)庫訪問,打印SQL的例子
今天小編就為大家分享一篇Laravel監(jiān)聽數(shù)據(jù)庫訪問,打印SQL的例子,有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
Laravel最佳分割路由文件(routes.php)的方式
本文是一篇關(guān)于Laravel分割路由文件(routes.php)的最佳方式教程文章,內(nèi)容介紹的很詳細,學(xué)習(xí)Laravel的小伙伴可以參考學(xué)習(xí)。2016-08-08
windows7配置Nginx+php+mysql的詳細教程
這篇文章主要介紹了windows7配置Nginx+php+mysql的詳細教程 的相關(guān)資料,需要的朋友可以參考下2016-09-09
Symfony2使用第三方庫Upload制作圖片上傳實例詳解
這篇文章主要介紹了Symfony2使用第三方庫Upload制作圖片上傳的方法,結(jié)合實例形式較為詳細的分析了Symfony2使用第三方庫Upload的具體步驟與相關(guān)使用技巧,需要的朋友可以參考下2016-02-02
淺談php中變量的數(shù)據(jù)類型判斷函數(shù)
下面小編就為大家?guī)硪黄獪\談php中變量的數(shù)據(jù)類型判斷函數(shù)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
用PHP實現(xiàn)的生成靜態(tài)HTML速度快類庫
用PHP實現(xiàn)的生成靜態(tài)HTML速度快類庫...2007-03-03

