2 Commits
1723b0383c
...
1de24541b8
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
1de24541b8 |
修复功能: 下载脚本重复问题
|
3 years ago |
|
|
272eec6df8 |
修复功能: 优化下载文件脚本
|
3 years ago |
2 changed files with 338 additions and 20 deletions
@ -1,14 +1,247 @@ |
|||
<?php |
|||
try { |
|||
while (true) { |
|||
$url = 'http://article.com:70/sendArticle'; |
|||
$curl = curl_init(); |
|||
curl_setopt($curl, CURLOPT_URL, $url); |
|||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); |
|||
$res = json_decode(curl_exec($curl), true); |
|||
curl_close($curl); |
|||
sleep(10); |
|||
} |
|||
}catch(\Exception $e) { |
|||
echo $e->getMessage(); |
|||
|
|||
$remoteUrl = 'https://article.kkxxkj.cn/api/getArticle'; |
|||
$saveSrc = '/www/wwwroot/article.kkxxkj.cn/public/uploads'; |
|||
|
|||
|
|||
try { |
|||
while (true) { |
|||
saveRemote($remoteUrl, $saveSrc); |
|||
|
|||
sleep(60); |
|||
} |
|||
}catch(\Exception $e) { |
|||
echo $e->getMessage(); |
|||
} |
|||
|
|||
|
|||
|
|||
//保存远程附件
|
|||
function saveRemote($remoteUrl, $saveSrc){ |
|||
$fileinfo = getRemote($remoteUrl); |
|||
$mimeType = $fileinfo['head']['content_type']; |
|||
if($mimeType != 'application/zip')return false; |
|||
//下载失败
|
|||
if(!isset($fileinfo['head']['http_code']) || $fileinfo['head']['http_code'] !== 200){ |
|||
return false; |
|||
} |
|||
|
|||
$fileName = $saveSrc . '/tmp/' . uniqid() . '.zip'; |
|||
$res = setContent($fileName, $fileinfo['body']); //保存
|
|||
if(!$res)return false; |
|||
|
|||
//解压
|
|||
unzip($fileName, $saveSrc . '/ready'); |
|||
} |
|||
|
|||
|
|||
//获取远程文件信息
|
|||
function getRemote($url){ |
|||
$ch = curl_init($url); |
|||
curl_setopt($ch, CURLOPT_HEADER, 0); |
|||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); |
|||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
|||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); |
|||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); |
|||
$package = curl_exec($ch); |
|||
$httpinfo = curl_getinfo($ch); |
|||
curl_close($ch); |
|||
|
|||
return [ |
|||
'body' => $package, |
|||
'head' => $httpinfo |
|||
]; |
|||
} |
|||
|
|||
/** |
|||
* 存储文件内容 |
|||
* @param string $filesrc 文件路径 |
|||
* @param string $content 内容 |
|||
*/ |
|||
function setContent($filesrc, $content){ |
|||
createDir(dirname($filesrc)); |
|||
|
|||
return file_put_contents($filesrc, $content) !== false ? true : false; |
|||
} |
|||
|
|||
/** |
|||
* 递归创建文件夹 |
|||
* @param string $path 路径 |
|||
*/ |
|||
function createDir($path){ |
|||
if (!file_exists($path)){ |
|||
createDir(dirname($path)); |
|||
mkdir($path, 0777); |
|||
} |
|||
} |
|||
|
|||
|
|||
/** |
|||
* zip解压 |
|||
* @param string $zipfile 压缩文件目录 |
|||
* @param string $unzipdir 解压目录 |
|||
*/ |
|||
function unzip($zipfile, $unzipdir){ |
|||
//判断压缩文件是否存在
|
|||
if(!file_exists($zipfile)){ |
|||
return false; |
|||
} |
|||
|
|||
//判断解压目录是否存在
|
|||
if(is_dir($unzipdir)){ |
|||
deldir($unzipdir); |
|||
createDir($unzipdir); |
|||
}else{ |
|||
createDir($unzipdir); |
|||
} |
|||
|
|||
$zip = new \ZipArchive; |
|||
$res = $zip->open($zipfile); |
|||
if($res !== true){ |
|||
return false; |
|||
} |
|||
|
|||
$docnum = $zip->numFiles; |
|||
$ret = true; |
|||
for($i = 0; $i < $docnum; $i++) { |
|||
$statInfo = $zip->statIndex($i); |
|||
|
|||
if($statInfo['crc'] == 0 && $statInfo['comp_size'] == 0) { |
|||
//目录
|
|||
createDir(iconv('UTF-8', 'GB2312', $unzipdir.'/'.$statInfo['name']), 0777, true); |
|||
} else { |
|||
//文件
|
|||
//拷贝文件,特别的改动,iconv的位置决定copy能不能work
|
|||
$fileName = iconv('UTF-8', 'GB2312', $unzipdir.'/'.$statInfo['name']); |
|||
$aimDir = dirname($fileName); |
|||
createDir($aimDir); |
|||
|
|||
if(copy('zip://'.$zipfile.'#'.$statInfo['name'], $fileName) == false){ |
|||
$ret = false; |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
$zip->close(); |
|||
|
|||
if(!$ret){ |
|||
return false; |
|||
} |
|||
|
|||
//解决压缩方式问题
|
|||
$fileArrTemp = scandir($unzipdir); |
|||
$fileArr = []; |
|||
for($i = 0; $i < count($fileArrTemp); $i++){ |
|||
if($fileArrTemp[$i] != '.' && $fileArrTemp[$i] != '..'){ |
|||
$fileArr[] = $fileArrTemp[$i]; |
|||
} |
|||
} |
|||
if(count($fileArr) == 1){ |
|||
moveDir($unzipdir . $fileArr[0], $unzipdir, true); |
|||
} |
|||
|
|||
return true; |
|||
} |
|||
|
|||
//删除文件夹
|
|||
function deldir($dir) { |
|||
//先删除目录下的文件:
|
|||
if(!is_dir($dir)){ |
|||
return true; |
|||
} |
|||
|
|||
$dh = opendir($dir); |
|||
while($file = readdir($dh)) { |
|||
if($file != "." && $file != "..") { |
|||
$fullpath = $dir."/".$file; |
|||
if(!is_dir($fullpath)) { |
|||
unlink($fullpath); |
|||
} else { |
|||
deldir($fullpath); |
|||
} |
|||
} |
|||
} |
|||
|
|||
closedir($dh); |
|||
//删除当前文件夹:
|
|||
if(rmdir($dir)) { |
|||
return true; |
|||
} else { |
|||
return false; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 移动文件夹 |
|||
* |
|||
* @param string $oldDir |
|||
* @param string $aimDir |
|||
* @param boolean $overWrite 该参数控制是否覆盖原文件 |
|||
* @return boolean |
|||
*/ |
|||
function moveDir($oldDir, $aimDir, $overWrite = false, $chmod = false) { |
|||
$aimDir = str_replace('', '/', $aimDir); |
|||
$aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir . '/'; |
|||
$oldDir = str_replace('', '/', $oldDir); |
|||
$oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir . '/'; |
|||
|
|||
if (!is_dir($oldDir)) { |
|||
return false; |
|||
} |
|||
|
|||
if (!file_exists($aimDir)) { |
|||
createDir($aimDir); |
|||
} |
|||
|
|||
@$dirHandle = opendir($oldDir); |
|||
|
|||
if (!$dirHandle) { |
|||
return false; |
|||
} |
|||
|
|||
while (false !== ($file = readdir($dirHandle))) { |
|||
if ($file == '.' || $file == '..') { |
|||
continue; |
|||
} |
|||
|
|||
if (!is_dir($oldDir . $file)) { |
|||
moveFile($oldDir . $file, $aimDir . $file, $overWrite, $chmod); |
|||
} else { |
|||
moveDir($oldDir . $file, $aimDir . $file, $overWrite); |
|||
} |
|||
} |
|||
|
|||
closedir($dirHandle); |
|||
|
|||
return rmdir($oldDir); |
|||
} |
|||
|
|||
/** |
|||
* 移动文件 |
|||
* |
|||
* @param string $fileUrl |
|||
* @param string $aimUrl |
|||
* @param boolean $overWrite 该参数控制是否覆盖原文件 |
|||
* @return boolean |
|||
*/ |
|||
function moveFile($fileUrl, $aimUrl, $overWrite = false, $chmod = false) { |
|||
if (!file_exists($fileUrl)) { |
|||
return false; |
|||
} |
|||
|
|||
if (file_exists($aimUrl) && $overWrite = false) { |
|||
return false; |
|||
} elseif (file_exists($aimUrl) && $overWrite = true) { |
|||
@unlink($aimUrl); |
|||
} |
|||
|
|||
$aimDir = dirname($aimUrl); |
|||
createDir($aimDir); |
|||
rename($fileUrl, $aimUrl); |
|||
|
|||
if($chmod){ |
|||
@chmod($aimUrl, 0777); |
|||
} |
|||
|
|||
return true; |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue