本帖最后由 元首 于 2012-7-3 11:48 编辑
插件名称: 远程图片下载
适用于: discuz X 2.5 (其它版本是否适用未测试);
编码 : UTF-8, 非UTF的自己转一下.
更新者: 元首.
更新时间: 2012-07-03 10:00
使用方法: 在原官方基础上修正的, 当发表主题时, 点击图片下载即可.
插件要求: 建议服务器开启curl功能, 图片下载速度会更快.
测试数据: 24张图片, 每张约200KB, 共计4MB大小, 图片下载时间10秒, 图片后期处理时间为7秒. 共计17秒. 官方的操作有许多, 比如缩略图, 索引, 判断文件或者远程FTP等等.
实现方法: 既然官方已经有远程图片下载功能, 许多用户反映此功能, 基本上算是闲置. 感谢上帝, 让我今天在逛discuz时, 看到了这个用户回复的内容. 本人有少量的采集及同步经验, 经验告诉我, 这个问题是可以解决的, 顺便帮官方优化一下代码. 官方旧的流程是: 取出信息中的 就是图片标签中的url, 然后循环, 取得图片数据, 然后一一入库做处理. 默认用了sockopen, 在php历史上号称最慢的函数, 当然sockopen也有他的好处, 支持ssl, 更为稳定, 但discuz使用的用户多为中国用户, 可以换成curl去实现. curl实现就得解决循环取值, 费时的问题, 比如一张200K的图片, 你取一次, 大约为3秒, 那30张就是90秒, 假如你是用户, 会如何? 不管你会如何, 反正我是会崩溃.
功能已经测试过多次, 还需要不同的用户不同的服务器再深入测试,
安装方法:
文件下载:
下载rar文件解压, 得到:forum_ajax.php 然后将此php文件上传到\source\module\forum\目录, 替换旧的php文件, 注意备份旧有的文件.
安装完成;
调试方式:
假如你在使用过程中遇到无法下载图片, 无响应, 或者其它相关, 请打开forum_ajax.php文件, 找到: define('GP_DEBUG', false); 修改为: define('GP_DEBUG', true); 然后再发表一篇主题, 然后查看: ./data/img_sync.log文件, 看不懂的用户可以发上来, 我们帮你分析.
调试完成, 将define('GP_DEBUG', true); 改成 define('GP_DEBUG', false);
图片演示.
|