天山网艾克

4813 经验值

install 后 ,composer show 的时候显示 illuminate/config 等等好多项目, 这是install引起的还是扩展包引起的呢?

我果然问了这么蠢货的问题,my bad

function get_url_content($url){
 
  if(function_exists("curl_init")){
 
    $ch = curl_init();
 
    $timeout = 30;
 
    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);
 
  }else{
 
    $is_auf=ini_get('allow_url_fopen')?true:false;
 
    if($is_auf){
 
      $file_contents = file_get_contents($url);
 
    }
 
  }
 
  return $file_contents;
 
}

使用这个方法,下载不到laravel的程序

html部分写个a

<a href="JavaScript:window.history.go(-1)">返回</a>

有已弄好的laravel代码,访问地址 localhost/article/1 , 我想这个文件下载存html, 然后使用

file_get_contents('http://localhost/article/1','1.txt')

打开运行后不停的转,没能下载html内容。如何处理好呢

laravel 静态化的问题

因为我在写面向对象式实现静态化,部分代码先贴出来了

模板代码 , 视图 :app.template.article

@extends('app.app')
@section('body')
    {title}
    <hr>
    {content}
@endsection

AppLibs 单对象静态文件静态化方法

trait Staticize
{
    /**
     * html 生成目录
     * @var string
     */
    private $html_folder = "content";
    /**
     * 静态化生成html文件
     * @param $obj 静态的对象
     * @param null $view_name 模板view的位置 xxx.xx.xx等格式
     * @param null $save_path 存储生成的目录
     * @param null $path_format 路径规则
     */
    public function staticizeToHtml($obj,$view_name=null,$save_path=null,$path_format=null){

        $template = view($view_name)->__toString();

        preg_match_all('/{\S+}/i', $template, $matches);
        foreach ($matches[0] as $key => $value) {
            $column=preg_replace('/{|}/i','',$value);
            $template = preg_replace('/' . $value . '/', $obj->$column, $template);
        }
        ob_start();
        /* 创建时间 */
        $created = $obj->created_at->format('Y-m-d');
        /* 存储目录 */
        if($save_path==null)
            $savePath=$this->html_folder;
        $saveFolder = "$savePath/$created";
        /* 唯一 */
        $id=$obj->id;
        /* 如果存储目录不存在,建设存储目录,最后的true 允许创建多级目录 */
        if (!is_dir($saveFolder))
            mkdir($saveFolder, 0777, true);
        /* 存储路径 */
        $savePath = "$saveFolder/content_$id.html";
        file_put_contents($savePath,$template);
    }
}

控制器的调用

class ArticleStaticizeController extends Controller
{
    use Staticize;
    /* 存储文件规则 */
    private $html_folder = "content";
    /**
     * 手动多选的静态化
     * @param Request $request
     */
    public function articleMultiStaticize(Request $request)
    {
        $id_list=$request->get('id_list');
        $articles = Article::where(['status' => 1])->whereIn('id',$id_list)->get();
        /* 使用替换规则,页面上的关键字进行替换 */
        foreach ($articles as $article) {
            $this->staticizeToHtml($article, 'app.template.article');
        }
    }
}

就这样单对象的静态化方案成功了,有了模板以后,使用正则表达式,替换了动态数据值,下一步我要静态化列表页面,数据库有18200条稿件数据,这个列表页如何实现纯静态化呢?要生成html文件。