首 页 | 站长基地 网址分类 小程序 | 实用工具 最新 推荐 随机 热门 地区导航 | 网址快审 | 网址提交 |
当前位置: 首页 > 站长基地 > PHP
来源:原创 浏览:65次 时间:2021-05-12 22:42:23
昨天(2021/05/11)在代码区看到一个生成站点快照的代码,看了半天才发现,作者仅仅贴出来业务代码,最核心的生成快照图片的代码反而没有给...

昨天(2021/05/11)在代码区看到一个生成站点快照的代码,看了半天才发现,作者仅仅贴出来业务代码,最核心的生成快照图片的代码反而没有给出来。 以前记得google搜索提供站点缩略图的现实,那时候觉得好神奇,但是没有花时间去做深入的调研。昨天又遇到了,那就顺便调研下吧。

才开始找到了wkhtmltopdf这款工具,这款工具的地址是:http://code.google.com/p/wkhtmltopdf/。 这款工具集下有一个wkhtmltoimage,可以用来生成站点快照。才开始在xen的虚拟机上跑,操作系统是centos,各种问题,折腾到最后实在没经历折腾了。
查到后来,看到老外一篇文章,发现wkhtmltoimage对与运行xen虚拟机的系统支持的并不好,具体情况可以参见这篇文章:http://blog.behance.net/dev/wkhtmltopdf-wkhtmltoimage-x-centos-x-xen-segfault-mania

放弃了wkhtmltoimage,继续找到了phantomjs和slimerjs,两款都是服务器端的js,简单理解,都是封装了浏览器解析引擎,不同是phantomjs封装的webkti,slimerjs封装的是Gecko(firefox)。 权衡利弊,决定研究下phantomjs,于是就用phantomjs实现了网站快照生成。phantomjs的项目地址是:http://phantomjs.org/

代码涉及两个部分,一个是设计业务的index.php,另一个是生成快照的js脚本snapshot.js。代码比较简单,仅仅是实现了功能,没有做过多的修饰。代码分别如下所示:

index.php

<?php
    if (isset($_GET['url']))
    {
        set_time_limit(0);

        $url = trim($_GET['url']);
        $filePath = "./cache/".md5($url).'.png';        if (is_file($filePath))
        {            exit($filePath);
        }

        $command = "phantomjs/bin/phantomjs snapshot.js {$url} {$filePath}";
        exec($command);        exit($filePath);
    }?><!DOCTYPE html><html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="keywords" content="" /><meta name="description" content="" /><title>快照生成</title><script src="http://code.jquery.com/jquery-1.8.3.min.js"></script><style>* {    margin: 0;    padding: 0;
}form {    padding: 20px;
}div {    margin: 20px 0 0;
}input {    width: 200px;    padding: 4px 2px;
}#placeholder {    display: none;
}</style></head><body>
    <form action="" id="form">
        <input type="text" id="url" />
        <button type="submit">生成快照</button>

        <div>
            <img src="" alt="" id="placeholder" />
        </div>
    </form>

    <script>
    $(function(){
        $('#form').submit(function(){            if (typeof($(this).data('generate')) !== 'undefined' && $(this).data('generate') === true)
            {
                alert('正在生成网站快照,请耐心等待...');                return false;
            }

            $(this).data('generate', true);
            $('button').text('正在生成快照...').attr('disabled', true);

            $.ajax({                type: 'GET',                url: '?',                data: 'url=' + $('#url').val(),                success: function(data){
                    $('#placeholder').attr('src', data).show();
                    $('#form').data('generate', false);
                    $('button').text('生成快照').attr('disabled', false);
                }
            });            return false;
        });
    });    </script></body></html>

snapshot.js

var page = require('webpage').create();var args = require('system').args;var url = args[1];var filename = args[2];

page.open(url, function () {
    page.render(filename);
    phantom.exit();
});


转载请注明本文地址: http://www.hzlm.net/php/266.html复制链接】【收藏 】 【打印更新时间:2021-05-12 22:45:39
特别提示:
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"www.hzlm.net",如遇到无法解压的请联系管理员!

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
最新文章
推荐文章

© 2020-2021 Hzlm.net All Rights Reserved.

QQ联系我们 电子邮件联系我们

粤ICP备2021016327号-1   粤公网安备44060402002046号

关闭
顶部