立即注册 登录
彼岸网 返回首页

天香公主的个人空间 http://www.bian-wang.com/discuz/?10005 [收藏] [复制] [分享] [RSS] txgz999@yahoo.com

日志

Discuz系统学习:远程附件

热度 5已有 3009 次阅读2016-5-28 11:07 AM |个人分类:Discuz| 网站服务器, 空间, 软件

1。远程附件设置

Discuz软件提供了一个远程附件的功能,启用后能将站内上传的各种文件(如日志文章帖子里加的相册图片和文章帖子里加的附件)都放在和网站服务器分离的一个远程空间里去。谢谢网友 carry0987 提供了这样一个空间,让我能有机会测试下这个功能。他提供的远程空间信息是(文中的用户名和密码是虚拟的):
  • FTP主機IP: 31.170.165.167
  • FTP主機名: ftp.qbnehs.esy.es
  • FTP用戶名: u123456784
  • FTP密碼: A1234567
在我的测试网站 http://distst.website/dz32 上的管理中心的全局->上传设置->远程附件里做了如下设置:


主动模式和被动模式是FTP通信里的两种工作模式,名称源于服务器端是否向客户端发起连接,见 http://www.slacksite.com/other/ftp.html 里的介绍。有些FTP服务器只支持主动模式,有些只支持被动模式(如Godaddy),有些两种都支持。FTP客户端必须用服务器端支持的模式来和服务器通信。

下面是在看到的远程空间里的内容:

在设置时填写的'远程附件目录'(我上面填的是test)相当于基本设置里的'本地附件保持位置'(默认值是./data/attachment),两者下面有同样的文件夹结构。

现在在日志文章相册和论坛里加的图片和附件都到了远程空间:

而且在相册里将图片删掉和论坛里将附件删掉后,它们在远程空间里也立刻消失了。
再从cPanel进入我的网站服务器里看,那些上传文件都没存在网站服务器里,而只存在了远程空间里。网站服务器上只有空文件夹。



2。如何在程序里接触远程附件

先看看如何在程序里得到远程附件里的设置值。它们的值在程序里都可以按它们的设置名来获取: getglobal('setting/ftp/设置名') 或 $_G['setting']['ftp']['设置名'] 。下面是那些设置项的标签和设置名的对应表:
  • 启用远程附件 on
  • 启用 SSL 连接 ssl
  • FTP 服务器地址: host
  • FTP 服务器端口: port
  • FTP 帐号: username
  • FTP 密码: password
  • 被动模式(pasv)连接: pasv
  • 远程附件目录: attachdir
  • 远程访问 URL: attachurl
  • FTP 传输超时时间: timeout
  • 允许的附件扩展名: allowedexts
  • 禁止的附件扩展名: disallowedexts
  • 附件尺寸下限: minsize
  • 隐藏远程附件真实路径: hideurl
比如'启用远程附件'设置值可用 getglobal('setting/ftp/on') 或 $_G['setting']['ftp']['on'] 来得到。

PHP提供了一整套与远程空间联系的FTP客户端函数,见 http://php.net/manual/zh/ref.ftp.php,而Discuz将它们包在了一个叫discuz_ftp的单例模式的类里,定义在文件source/class/discuz/discuz_ftp.php里。然后又在文件source/function/function_core.php里定义了函数 ftpcmd 作为统一入口来调用discuz_ftp类里的各函数。所以所有用到Discuz里远程附件功能的地方就只要调用这个函数就行了。

下面以在相册里上传图片为例看看是如何用这个函数的。在上传图片时,浏览器给网站服务器发了下面的请求: POST /discuz32/misc.php?mod=swfupload&action=swfupload&operation=album HTTP/1.1 在服务器端是由下面这些脚本文件来传递和合作处理这个请求的: misc.php => source/module/misc/misc_swfupload.php => pic_save in source/function/function_spacecp.php 上传后的图片先存在了网站本地附件目录里。如果网站启用了远程附件的话,会将刚存在本地的图片拷贝到远程空间去,然后再删除本地图片。其中用到 ftpcmd 的相关代码就在函数 pic_save 内: if(getglobal('setting/ftp/on')) { $ftpresult = ftpcmd('upload', 'album/'.$upload->attach['attachment']); if($ftpresult) { @unlink($_G['setting']['attachdir'].'album/'.$upload->attach['attachment']);

发表评论 评论 (36 个评论)

回复 天香公主 2018-1-21 01:29 AM
东风: 太谢谢了~~一下子就发现问题了~~太佩服了~~
  
回复 东风 2018-1-21 01:15 AM
太谢谢了~~一下子就发现问题了~~太佩服了~~
回复 东风 2018-1-20 11:44 PM
天香, 又来求救了, 站点从周五开始不能回复博客评论,不能回复留言, 不能发表情动作。我后台查了下,没有最近文件改动,除了添加两个表情,但是删除后还是一样。
回复 a77 2017-12-5 04:25 AM
天香公主: 不用写插件,就是写一两个单独的文件放在网站上测试下。你可以直接拷贝 http://www.w3school.com.cn/php/php_file_upload.asp里的代码:
1)在网站根目录下加个 ...
测试完毕,通过你提供的代码上传图片,速度也只有600k字节每秒,但是直接用xftp上传图片又能5m字节每秒。太奇怪了。既然不是discuz的问题,难道是我的ngxin设置有问题吗。
回复 a77 2017-12-4 01:05 PM
天香公主: 不用写插件,就是写一两个单独的文件放在网站上测试下。你可以直接拷贝 http://www.w3school.com.cn/php/php_file_upload.asp里的代码:
1)在网站根目录下加个 ...
好!明天测试再来跟你说结果。先睡了晚安。
回复 天香公主 2017-12-4 07:37 AM
a77: 我问过vps服务商上传速度问题,他们说是discuz的事,因为我直接通过xftp上传图片到vps任意目录时网速达到了平均5m字节每秒,而通过discuz发帖传图就在600k字节每 ...
不用写插件,就是写一两个单独的文件放在网站上测试下。你可以直接拷贝 http://www.w3school.com.cn/php/php_file_upload.asp里的代码:
1)在网站根目录下加个文件叫 test.htm, 放入上述网页里的第一个框里面的代码
2)在网站根目录下再加一个文件叫 upload_file.php, 放入上述网页里的第二个框里面的代码
然后从浏览器里测试用test.htm上传文件的速度
回复 a77 2017-12-4 03:53 AM
天香公主: 有趣,等我有空也用这个软件测测,不过估计没法给你有效的建议。不知你是否试过
1)在激活flash和不激活flash的两种情形里,比较下论坛上传图片的速度差异
2)自 ...
我问过vps服务商上传速度问题,他们说是discuz的事,因为我直接通过xftp上传图片到vps任意目录时网速达到了平均5m字节每秒,而通过discuz发帖传图就在600k字节每秒徘徊。我找时间测试一下不激活flash上传。另外我不懂php写不了插件,但是我会去看看尝试学习。感谢答疑。
回复 天香公主 2017-12-3 01:25 PM
a77: 哦,我是用NetPerSec这个软件监视网络上传速度的。至于新尺寸图片的生成,应该是在我把图片上传完成之后才有的动作。我是打算做一个图片分享社区,希望能让用户 ...
有趣,等我有空也用这个软件测测,不过估计没法给你有效的建议。不知你是否试过
1)在激活flash和不激活flash的两种情形里,比较下论坛上传图片的速度差异
2)自己用php写一个最简单的图片上传和保存应用,类似于https://www.tutorialrepublic.com/php-tutorial/php-file-upload.php,放在那个vps上试试上传速度
如果都在600k左右的话,建议和提供vps的服务商联系下,他们也许知道有哪个设置改变后能提速
回复 a77 2017-12-3 12:43 PM
天香公主: 欢迎新网友。我对这问题没经验,不知你是怎么计算discuz上传图片速度的?这个速度会不会包括了服务器端处理图片的时间?一张图片在论坛里上传后保存在了data/att ...
哦,我是用NetPerSec这个软件监视网络上传速度的。至于新尺寸图片的生成,应该是在我把图片上传完成之后才有的动作。我是打算做一个图片分享社区,希望能让用户迅速的完成传图,尽量把体验做好。可是我才疏学浅,实在不懂discuz的上传机制,然后上谷歌搜索了一阵,找到了贵站,前来学习。
回复 天香公主 2017-12-3 12:14 PM
a77: 天香你好,请教一个问题,discuz论坛发帖时上传图片的上传速度,是由什么来决定的呢?目前我家的宽带上传速度为40兆比特每秒,约合5兆字节每秒,另外我的vps入口 ...
欢迎新网友。我对这问题没经验,不知你是怎么计算discuz上传图片速度的?这个速度会不会包括了服务器端处理图片的时间?一张图片在论坛里上传后保存在了data/attachement/forum里了,但是discuz又从这图片生成了新尺寸的图片放在了data/attachment/image里了,这个生成图片的过程很费时间的。
回复 a77 2017-12-3 04:43 AM
天香你好,请教一个问题,discuz论坛发帖时上传图片的上传速度,是由什么来决定的呢?目前我家的宽带上传速度为40兆比特每秒,约合5兆字节每秒,另外我的vps入口带宽是100兆比特每秒。如果直接通过xftp传图片文件到vps,可以占满宽带的上传速度5兆字节每秒。但是当我通过discuz发帖传图的时候,上传速度只有600k左右,我的图每张4M左右。请天香解惑。
回复 carry0987 2016-11-24 09:17 PM
东风: 谢谢您,Carry, 因为还涉及每个月收费挂靠银行卡的问题, 等周末让亲友帮忙吧; 再次感谢,感恩节快乐~
好吧,感恩節快樂!
回复 东风 2016-11-24 05:04 PM
carry0987: 啊,這個我可以幫忙,手機驗證不是問題
谢谢您,Carry, 因为还涉及每个月收费挂靠银行卡的问题, 等周末让亲友帮忙吧; 再次感谢,感恩节快乐~
回复 carry0987 2016-11-21 01:12 AM
东风: 谢谢您,搜寻了下,七牛真的不错, 但是有个问题:它的存储结构不是目录树形的(key/value), 以前发表的主题不知道能否支持.
还有一个就是几个云除了阿里都有的 ...
啊,這個我可以幫忙,手機驗證不是問題
回复 东风 2016-11-20 09:00 PM
carry0987: 不考慮七牛?
谢谢您,搜寻了下,七牛真的不错, 但是有个问题:它的存储结构不是目录树形的(key/value), 以前发表的主题不知道能否支持.
还有一个就是几个云除了阿里都有的问题:注册需要国内的手机验证!!
回复 carry0987 2016-11-20 11:32 AM
东风: 我在犹豫着到底用阿里云还是又拍云,纠结中,但是到了不得不设置远程附件的时候了。不知用过的先辈们能否不吝赐教 。我们的附件达到30g了   ...
不考慮七牛?
回复 东风 2016-11-19 07:10 PM
sesemule: 对,第三方网盘都是为了推他们自己的服务,不会甘心默默地躲在背后,
我在犹豫着到底用阿里云还是又拍云,纠结中,但是到了不得不设置远程附件的时候了。不知用过的先辈们能否不吝赐教 。我们的附件达到30g了
回复 sesemule 2016-5-30 11:42 AM
天香公主: 我刚试了试这篇里的链接 http://www.bian-wang.com/discuz/home.php?mod=space&uid=10005&do=blog&id=819,那些都是网友放在Dropbox上的pdf文件。的确用户体验不 ...
对,第三方网盘都是为了推他们自己的服务,不会甘心默默地躲在背后,
回复 天香公主 2016-5-30 10:53 AM
sesemule: 云盘插件的原理是:调用API上传附件到云盘,同时返回一个地址插入帖子内容。这里首先就存在一个风险,如果云盘改了文件分享地址格式,云盘的用户没有影响,但是 ...
我刚试了试这篇里的链接 http://www.bian-wang.com/discuz/home.php?mod=space&uid=10005&do=blog&id=819,那些都是网友放在Dropbox上的pdf文件。的确用户体验不好,点击后不打开文件,而是跳出个窗口问我要不要装App。
回复 sesemule 2016-5-30 07:58 AM
天香公主: 谢谢介绍,我没用过云盘。有点不解,为什么'万一云盘商停止服务,搬迁附件就太麻烦了'?
云盘插件的原理是:调用API上传附件到云盘,同时返回一个地址插入帖子内容。这里首先就存在一个风险,如果云盘改了文件分享地址格式,云盘的用户没有影响,但是论坛附件地址就会失效。(印象中百度网盘就改过一次)再有,点击附件地址后是跳转到云盘页面下载的,用户体验不好;云盘页面上还会用较大字体提示登录下载,会对用户造成一定困扰。还有,如果附件是图片,无法像远程附件一样直接显示图片。还有,删除帖子不能自动删除相应附件导致浪费空间……基本上是这样的,使用云盘插件就相当于用户把云盘的文件地址粘贴到帖子里,只不过精简了打开云盘官网登录上传复制粘贴的过程。

如果是用户登录自己的云盘上传附件的形式,一旦云盘商停止服务,用户云盘里的东西就完全无法控制了;如果是统一上传到站长云盘的形式,会好一点。也许我之前夸大了迁移云盘附件的难度,因为认真想了一下,迁移远程空间附件也挺麻烦的,也要动数据库。远程空间的最大好处是我上一段提到的,给用户一个统一的体验,不用跳出本站。

您在彼岸发布文件,本来可以用微软或者谷歌的网盘,但是还是用的彼岸自己的上传文件功能,也是基于这一点吧?不用跳转到第三方网盘,体验良好。
12下一页

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

小黑屋|Archiver|彼岸网  

Powered by Discuz! X3.1 © 2001-2014 Comsenz Inc.
GMT-4, 2018-4-19 11:09 PM , Processed in 0.059314 second(s), 8 queries. ,ApcOn

返回顶部