本帖最后由 元首 于 2013-6-9 12:36 编辑
使用方法: 在原官方基础上修正的, 当发表主题时, 点击图片下载即可.
插件要求: 建议服务器开启curl功能, 图片下载速度会更快.
测试数据: 24张图片, 每张约200KB, 共计4MB大小, 图片下载时间10秒, 图片后期处理时间为7秒. 共计17秒. 官方的操作有许多, 比如缩略图, 索引, 判断文件或者远程FTP等等.
实现方法: 既然官方已经有远程图片下载功能, 许多用户反映此功能, 基本上算是闲置. 感谢上帝, 让我今天在逛discuz时, 看到了这个用户回复的内容. 本人有少量的采集及同步经验, 经验告诉我, 这个问题是可以解决的, 顺便帮官方优化一下代码. 官方旧的流程是: 取出信息中的 就是图片标签中的url, 然后循环, 取得图片数据, 然后一一入库做处理. 默认用了sockopen, 在php历史上号称最慢的函数, 当然sockopen也有他的好处, 支持ssl, 更为稳定, 但discuz使用的用户多为中国用户, 可以换成curl去实现. curl实现就得解决循环取值, 费时的问题, 比如一张200K的图片, 你取一次, 大约为3秒, 那30张就是90秒, 假如你是用户, 会如何? 不管你会如何, 反正我是会崩溃.
功能已经测试过多次, 还需要不同的用户不同的服务器再深入测试.
utf-8 版本(其它版本请另存为转换)
下载zip文件解压, 得到:forum_ajax.php 然后将此php文件上传到\source\module\forum\目录, 替换旧的php文件, 注意备份旧有的文件.
调试方式:
假如你在使用过程中遇到无法下载图片, 无响应, 或者其它相关, 请打开forum_ajax.php文件, 找到: define('GP_DEBUG', false); 修改为: define('GP_DEBUG', true); 然后再发表一篇主题, 然后查看: ./data/sync_images.log文件, 看不懂的用户可以发上来, 我们帮你分析.
调试完成, 将define('GP_DEBUG', true); 改成 define('GP_DEBUG', false);
官方原图片下载功能.
官方原版下载过程, 注意看时间, 是10秒左右. 图片约12张.
这是修改之后的效果. 时间已经明显缩小. 此为调试模式下运行.
修改之后真实情况验证, 3秒的速度明显优势突出, 官方是10秒, 增加此功能后, 变成3秒.
图片全部在列表中显示出来.
复制的图片有40张, 花费15秒, 基本上1秒下载三张图片. 数据并不是全部雷同, 这得根据你的服务器性能来决定.
* 注意: 本功能需要curl扩展功能支持, 请联系主机提供商是否支持, 或者其它限制.
有异常请回复本帖, 我会一一解答.
|