您的位置:首页 > 编程语言 > PHP开发

zhphp framework(二十一) file 文件类

2015-12-13 10:01 591 查看
<?php
/**
* Created by JetBrains PhpStorm.
* User: 张华
* Date: 14-3-8
* Time: 下午12:21
* QQ: 746502560@qq.com
* To change this template use File | Settings | File Templates.
*/
final class file {
/**
* 创建目录
* @param type $dir
* @return boolean
*/
public static function mk_dir($dirs,$mode=0755){
set_time_limit(0);
if(is_array($dirs)){
foreach($dirs as $dir){
self::mk_dir($dir,$mode);
}
}else if(is_string($dirs)){
if (is_dir($dirs) || @mkdir($dirs,$mode,true));
}
unset($dirs,$mode);
return true;
}

/**
* @param $files
* @return bool
*/
public static  function touchFile($files){
if(is_array($files)){
$count=count($files);
for($i=0;$i<$count;$i++){
if( ! is_file($files[$i])){
header("Content-type: text/html; charset=utf-8");
$fo= fopen($files[$i],"w") or die("Unable to open file!");
chmod($files[$i],0777);
fclose($fo);
}
}
unset($files,$count);
}else{
if( ! is_file($files)){
header("Content-type: text/html; charset=utf-8");
$fo= fopen($files,"w") or die("Unable to open file!");
chmod($files,0777);
fclose($fo);
}
}
return true;
}
/**指定读取文件从多少行 到多少行
*
* @param $file
* @param $startLine
* @param $endLine
* @return bool|string
*/
public  static  function  GetFilePart($file, $startLine, $endLine){
if($endLine< 0) {
return false;
}
$return = '';
$files = file($file);
if($startLine < 0) {
$startLine = 0;
}
$iCpt = count($file);
if($iCpt < $endLine) {
$endLine = $iCpt;
}
for($i = $startLine; $i <= $endLine; $i++)
{
//if($i < count($files) && $i >= 0)
$return .= $files[$i];
}

return $return;
}

public  static  function downloadFile($file){
/*Coded by Alessio Delmonti*/
$file_name = $file;
$mime = 'application/force-download';
header('Pragma: public');       // required
header('Expires: 0');           // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header('Content-Type: '.$mime);
header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
header('Content-Transfer-Encoding: binary');
header('Connection: close');
readfile($file_name);           // push it out
exit();
}

/**
* curl 远程调用
* @param $urls
* @param $delay
* @return array
*/
public  static  function rolling_curl($urls, $delay) {
$queue = curl_multi_init();
$map = array();
foreach ($urls as $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_NOSIGNAL, true);
curl_multi_add_handle($queue, $ch);
$map[(string) $ch] = $url;
}
$responses = array();
do {
while (($code = curl_multi_exec($queue, $active)) == CURLM_CALL_MULTI_PERFORM) ;
if ($code != CURLM_OK) {
break;
}
while ($done = curl_multi_info_read($queue)) {
$info = curl_getinfo($done['handle']);
$error = curl_error($done['handle']);
$results = callback(curl_multi_getcontent($done['handle']), $delay);
$responses[$map[(string) $done['handle']]] = compact('info', 'error', 'results');
curl_multi_remove_handle($queue, $done['handle']);
curl_close($done['handle']);
}
if ($active > 0) {
curl_multi_select($queue, 0.5);
}

} while ($active);

curl_multi_close($queue);
return $responses;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  class zh