七牛数据库
‘壹’ 七牛云存储怎么布署到服务器
"在网络覆盖的范围内手机、平板、电脑可以随时的实现文件同步
"部门之间可以安全的文件分享
"所有人对文件的操作行为均可以被记录
"登录身份认证机制与企业现有管理机制相结合
"存放于数据中心的文件具备高强度的加密
正是从这种需求出发,推动了厂商对企业私有云存储的技术研发,目前市场上已经有部分成熟的产品方案得到应用,笔者刚刚拿到VEsystem 推出的VECloud 2.0最新版,目前正在测试中;在此谨以VECloud 2.0(和信云存储)为例,向大家讲解企业私有云存储的快捷部署方法,供企业信息管理人员在方案选择时参考所有。
抽象来看与网络云网盘一样,部署好的私有云存储是一个可以通过浏览器输入网址或IP地址直接访问的网站。那么除服务器基础平台的建设之后,我们需要就是搭建一套Web Server 的发布平台,最常见的WEB发布平台应该是IIS(微软服务器版系统中自身提供) 、以及Apache ,根据不同网站开发语言的需要还需要配置脚本解释与数据库支持;比如大家经常提到的ASP + mssql 、php + mySQL 等;
2
VECloud 2.0 对WEB平台要求是:PHP 5.10 / mySQL 5.5
以往在Windows平台手工搭建AMP环境(Apache MySQL PHP)是比较复杂的,幸好现在已经有相应的一键式集成包,可以帮助我们快速完成这项工作。笔者比较习惯使用的是EasyPHP,本次部署所采用的版本是12.0 ;EasyPHP 安装非常简单几乎你只用点下一步即可以完成(对AMP 环境的搭建比较熟的朋友可以越过章节)。
安装结束后会自动打开默认浏览器呈现当前AMP配置运行信息,如上图我们可以看到APACHE 2.42 / MYSQL 5.5.2 / PHP 5.4.4 即已经有运行中,有关EasyPHP 12.0 的详细调试使用可以参考官方教程或相关文章,作为服务运行的支撑平台,其不属于云存储的技术讨论范围后面的章节中不再重复提及。
接下来我将VECloud2.0 的WEB站点的发布包,解压到WWW 目录中,然后通过浏览器访问本机IP 如127.0.0.1??即可以打开这个站点;站点首次被打开时会有一个安装向导完成初始的部署工作。如下图:
点击"现在就开始"…
接下来的页面中会显示出当前WEB服务器的环境配置信息,以及和信云存储对环境基本要求自检结果,为了保障功能的全面正常执行,建议按照提示信息的要求,调整服务器的配置信息以达到推荐标准,如下图:
在默认情况下 PHP 扩展中的PHP_EXIF 、PHP_GETTEXT 、PHP_LDAP 、PHP_OPENSSL 并未消开启,最大文件限制默认为2M ,这里会建议我们开启上述扩展并调大文件限制。
这都可以通过修改PHP.INI 配置文件来实现,PHP.INI 文件默认存放在apache 目录中,可以用记事本打开
可以通过查找方式找到PHP_EXIF 、PHP_GETTEXT 、PHP_LDAP 、PHP_OPENSSL 这几项PHPExt 所在位置,注意行前一个" ; "(分号),分号表示此行被注释,只需要将分号去掉即可,(如上图)如果是手工搭建的AMP 环境需要确定对应DLL 文件已经安装注册。
同时找到upload_max_filesize = 项,将最大上传文件的大小设定到一个合适的值。如上图
重新启动Apache 服务,刷新页面后我们可以看到自检测结果已经发生变化,目前我们WEB服务端的配置已经完全符合推荐要求。
点击"下一步"继续…
接下来的配置是关于MYSQL数据库的参数,我们需要创建一个数据库管理员以及对应的数据库、表名前缀;
可以通过PHPMYADMIN(MYSQL的在线管理工具,如果是通过EASYPHP安装则已经自带)来方便的创建用户并同时创建与用户名同名的数据库;如下图:
添加 [ 用户 ] / [ 添加用户 ], 输入用户名VECLOUD 、主机:127.0.0.1(如无分布部署或有额外的名称解析,应采用本机IP), 勾选"创建与用户同名的数据库并授予所有权限"
通过上述操作我们就为云存储服务端创建了专用的数据库管理用户及同名的数据库。
返回到云存储的安装界面,注意最后一项是关于"文件存储路径"的设置,在此处可以设定一个目标路径,当云存储服务上线之后,用户上传分享的文件都将保存在这个路径之下,因为目标路径建议采用专业存储阵列或设备,确保并发速度与数据安全。
接下来的页面中可对云存储的管理用户与密码进行设置,提示:管理员将可以在后台管理所有用户的信息以及系统的相关参数设置,一定要管理好该用户并设置高强度的密码,防止被猜测破解后登录。
点击"下一步"继续
至此,"和信云存储"的安装已经完成,可以试一下在浏览器中再次打开127.0.0.1 访问
这一次打开的不再是安装向导,一个真正架设在内网中的私有云存储用户登录界面呈现在眼前,VECloud 同时提供了Windows / Android / IPhone 、IPAD 的客户端,对此私有云存储的访问方式不限于网页登录,也可以随时用移动设备登录分享、同步自己的文件。
天互数据 为您解答,希望能帮到你
‘贰’ 嘉实投资都投过什么项目
嘉实投资投得项目一般都是科技类,或者是金融类的,比较有名的项目像京东金融,还有地平线机器人、首汽租车、七牛云、云丁、巨山数据库、生鲜传奇这些。
‘叁’ 怎么在七牛云服务器上安装mysql
需要安装,一般云服务器来的时候就是个带操作系统的裸机,除非是定制的机型,而且数据库还是自己安装比较好,环境比较了解。mysql安装还是很简单的。不要嫌麻烦了。
‘肆’ 服务在阿里云上 对象存储在七牛上行吗
开放云存储是存储服务,提供存储能力RDS是数据库服务,可以看成是阿里提供的一个优化后的数据库服务器
‘伍’ 请问储存在阿里云的数据如何下载到本地电脑
、阿里云RDS数据库恢复备份怎么处理?
建议您通过创建临时实例或克隆实例来恢复数据,验证临时实例或克隆实例的数据后,再把需要的数据迁移到生产实例,详情请参见通过克隆实例恢复到主实例和通过临时实例恢复到主实例。
2、阿里云rds主从配置和切换是怎样的?
(1)单个RDS无需设置:目前RDS本身就是高可用的主从架构,购买一个RDS,其实你得了两个服务器(一个主服务器,一个备份用的从服务器)。如果主服务器出故障了,自动切换到从服务器。所以,不需要做我们自己来做主从配置、备份、切换等。
(2)多个RDS不能做设置:rds权限限制2个RDS之间不能再做主从备份。
3、如何将RDS上的数据库备份到云服务器中?
您可以通过导出SQL语句的方式将数据库备份到云服务器上,也可以通过控制台的备份下载功能将RDS备份文件下载到云服务器上面。
4、通常,从新购实例到可以开始使用实例,您需要完成如下操作:
5、什么是阿里云rds数据库的透明切换?
(1)当RDS实例发生主备切换、规格升级时,不在事务中的连接会自动桥接,避免中断,对应用无感知。
(2)该功能免费使用
(3)主备切换时对应用透明
(4)操作步骤:登录RDS管理控制台选择目标实例所在地域单击目标实例的ID,进入基本信息页面。选择左侧菜单栏中的数据库代理,进入数据库代理页面。选择透明切换标签页默认开通,需要时可以手动关闭
6、阿里云rds数据库的使用操作需要注意些什么:
(1)无需基础运维:
购买RDS实例后,您不需要做数据库的基础运维(例如高可用、打安全补丁等)
(2)预防实例升级闪断:
RDS实例升级的过程中会出现一次最长30秒左右的连接闪断,需要您提前做好准备,并设置好程序的自动重连,避免因为升级导致服务不可用。(对于RDS for MySQL实例,开启透明切换可以减少95%的连接闪断。)
(3)预防故障切换:
对于高可用版和金融版实例,当主节点出现故障时,RDS会在30秒内切换到备节点。切换过程中有30秒左右的连接闪断,需要您设置好程序的自动重连,避免因为切换导致服务不可用。
(4)切换内外网需要更新链接地址:
切换内外网的过程中,服务器与RDS实例之间的连接会断开,IP地址也会改变。切换完成以后请及时更新程序中的连接地址。
(5)数据恢复前备份好重要数据:
建议您在数据恢复前备份好重要数据,以免导致数据丢失。
(6)定期检查实例存储空间:
如果实例的存储空间已满,该实例会被自动锁定,变成只读状态。建议您定期检查存储空间的使用情况。如果存储空间使用率过高,请参考解决方法进行处理。
(7)请检查性能优化和连接数:
请检查RDS实例的CPU核数、内存、IOPS、存储空间和连接数是否足够,如果不够需要优化或者升级。请检查RDS实例是否存在性能问题,例如是否有大量的慢SQL、SQL语句是否需要优化、是否有多余的索引或者缺失的索引等。
7、阿里云的rds怎么连接?
完成创建实例、设置白名单和创建账号等操作后,您可以使用数据管理服务DMS(Data Management Service)或通用数据库客户端连接到RDS实例。(提示:连接操作前需要先在RDS实例设置账号和密码)
(1)使用DMS连接实例:DMS是阿里云提供的图形化的数据管理工具,可用于管理关系型数据库和NoSQL数据库,支持数据管理、结构管理、用户授权、安全审计、数据趋势、数据追踪、BI图表、性能与优化等功能。(具体操作请参见通过DMS登录RDS数据库)
(2)使用客户端连接实例:由于RDS与原生的数据库服务完全兼容,所以您可以使用任何通用的数据库客户端连接到RDS实例,且连接方法类似。
‘陆’ php表单上传图片到七牛云存储并返回地址……求具体流程~有代码更好
有的,我最近研究了一下,写了一篇记录,如下
原文地址:http://cuiqingcai.com/?p=157
网上关于七牛云存储的教程除了官网上的API文档,其他的资料太少了。研究了下API之后,现在已经能实现图片的上传和下载及上传之后的重定向。
首先本篇文章实现的功能如下:
1.利用表单上传功能,用户可以点击选择文件按钮,选择本地的一个文件,同时设定上传的图片的名称,点击上传按钮可以上传并存储到七牛云存储。
2.在点击上传时会检测文件的后缀名,限制为jpg和png格式存储。
3.上传成功后跳转到自己设定的一个URL,并传回文件信息,如文件名。而不是显示七牛白花花的json显示页面。
好啦,那我们开始吧,首先我们要有一个七牛云存储账号,如果没有的就自己去申请吧。
七牛云存储传送门:http://www.qiniu.com/
一.SDK下载
https://github.com/qiniu/php-sdk/tags
戳这个网址下载一下SDK吧,里面封装了文件上传下载等等的方法,我们引入之后可以直接调用。
SDK之中有一个qiniu的文件夹,这是所有的SDK实货,这个是最重要的。我们首先要把这个文件夹及里面的文件放到项目文件夹中,比如我放到这里。
大家可以看到有一个qiniu文件夹。好啦,资源支持就是这样。接下来我们要实现代码咯。
二.文件的上传。
1.首先把你七牛云存储的密钥照出来,点击账号设置可以看到有一个AccessKey和SecretKey,留着备用。
2.上传凭证生成。
在这里我们首先要引入rs.php文件,自己找一对应路径,代码如下:
require_once(dirname(__FILE__)."/../../qiniu/rs.php");
dirname()是指的绝对路径,有时相对路径会出现问题,建议在前面加上dirname方法获取绝对路径。
require_once是引入文件,表示该文件只引入一次。
然后,传入你的AccessKey和SecretKey
代码如下:
$accessKey='';//换成你自己的密钥
$secretKey='';//换成你自己的密钥
Qiniu_SetKeys($accessKey, $secretKey);
然后建一个上传策略对象,将你的bucket传入,bucket 就是你的空间名。
$bucket = 'designpartners';
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
然后调用此方法来生成上传凭证。
$upToken = $putPolicy->Token(null);
接下来就写一个html表单
<formmethod="post"action="http://up.qiniu.com"name="form"enctype="multipart/form-data">
<ul>
<inputtype="hidden"id="token"name="token"value=<?phpecho$upToken?>>
<li>
<labelfor="key">key:</label>
<inputname="key"value="">
</li>
<li>
<labelfor="bucket">照片:</label>
<inputname="file"type="file"/>
</li>
<li>
<inputtype="submit"value="提交">
</li>
</ul>
</form>
action就填写up.qiniu.com,表单提供了一个输入框key,用来输入你想保存的图片名称,上传到七牛之后就是这个名字。
然后一个文件选择,一个提交按钮。运行结果如下:
输入key值和选择照片即可实现照片的上传。哈哈哈有没有很简单。
三、文件下载
原理和文件上传功能相仿。
引入文件
require_once(dirname(__FILE__)."/../../qiniu/rs.php");
声明你的七牛云存储域名和两个密钥以及向下载的文件名称
$key='00000';
$domain='designpartners.qiniudn.com';
$accessKey='';
$secretKey='';
注意:1.key值即为文件名,不要加后缀
2.domain即为bucket加上qiniudn.com,例子中的designpartners就是我在上传图片时用的bucket名。
3.accessKey和secretKey换成你自己的,直接用我的不行的..因为我修改了.
Qiniu_SetKeys($accessKey,$secretKey);
$baseUrl=Qiniu_RS_MakeBaseUrl($domain,$key);
$getPolicy=newQiniu_RS_GetPolicy();
$privateUrl=$getPolicy->MakeRequest($baseUrl,null);
echo$privateUrl." ";
传入这四个值即可生成一样url,直接访问url即可实现图片的下载。
在引入图片时直接
<img src = "<?php echo $privateUrl; ?>"/>
即可引入图片咯,很简单的吧。
四、303重定向
在上面的方法中,我们上传图片成功后跳转到up.qiniu.com下,会显示白白的网页,显示一个json字符串,但是在实际网站开发中我们肯定 不能让用户看到这种网页,所以我们用到了303跳转。SDK中也为我们封装了这个方法。使用其实非常简单。在上传文件的代码中添加两行代码即可
$putPolicy=newQiniu_RS_PutPolicy($bucket);
$putPolicy->ReturnUrl=site_url()."/upload/receiveInfo";
$putPolicy->ReturnBody='{"key":$(key)}';
注意:1.ReturnUrl和ReturnBody必须指定,并且首字母要大写,很多人都小写开头,这样会跳转不成功。
2.ReturnUrl必须是一个公网可以访问的网址,在本地测试是不可能通过的。比如你写成localhost,七牛服务器是定位不到的。
3.这个ReturnUrl的链接后会跟着一个?upload_ret=XXX,可以用get方法获取这个upload_ret。upload_ret的内容是base64安全编码的json形式的key值。
值的解析:比如我上传的文件名是555
upload/receiveInfo?upload_ret=eyJrZXkiOiAiNTU1In0=
网址后缀如上所示,把那个upload_ret复制下来,用base64解码可以出现如下结果:
{"key": "555"}
所以,我们要获取555这个值的代码如下,即解析代码如下:
$upload_ret=$_GET['upload_ret'];
$json_ret=base64_decode($upload_ret);
$result=json_decode($json_ret);
echo"key".$result->key;
好啦,获取到这个key值之后,你可以选择存到数据库或者进行其他的操作咯。
五、上传前文件类型的验证
我们可以用js来验证文件的后缀名,
在form的属性里加上
onsubmit="return isValidateFile('file');"
加上一个js方法
<script>
functionisValidateFile(obj){
varextend=document.form.file.value.substring(document.form.file.value.lastIndexOf(".")+1);
if(extend==""){
alert("请选择头像");
returnfalse;
}
else{
if(!(extend=="jpg"||extend=="png")){
alert("请上传后缀名为jpg或png的文件!");
returnfalse;
}
}
returntrue;
}
</script>
即可验证它的类型是否合法。
附:CI代码实现:
获取Uptoken:
functiongetUptoken(){
require_once(dirname(__FILE__)."/../../qiniu/rs.php");
//远程存储空间名称
$bucket='designpartners';
$accessKey='';
$secretKey='';
Qiniu_SetKeys($accessKey,$secretKey);
$putPolicy=newQiniu_RS_PutPolicy($bucket);
echosite_url();
$putPolicy->ReturnUrl=site_url()."/upload/receiveInfo";
$putPolicy->ReturnBody='{"key":$(key)}';
$upToken=$putPolicy->Token(null);
return$upToken;
}
文件上传:
publicfunctionuploadPic(){
$upToken=$this->getUptoken();
$data['upToken']=$upToken;
$this->load->view('upload',$data);
}
303重定向解析:
publicfunctionreceiveInfo(){
$upload_ret=$_GET['upload_ret'];
$json_ret=base64_decode($upload_ret);
$result=json_decode($json_ret);
echo"key".$result->key;
}
文件下载:
publicfunctiondownloadPic(){
require_once(dirname(__FILE__)."/../../qiniu/rs.php");
$key='00000';
$domain='designpartners.qiniudn.com';
$accessKey='';
$secretKey='';
Qiniu_SetKeys($accessKey,$secretKey);
$baseUrl=Qiniu_RS_MakeBaseUrl($domain,$key);
$getPolicy=newQiniu_RS_GetPolicy();
$privateUrl=$getPolicy->MakeRequest($baseUrl,null);
echo"====>getPolicyresult: ";
echo$privateUrl." ";
}
表单:
<script>
functionisValidateFile(obj){
varextend=document.form.file.value.substring(document.form.file.value.lastIndexOf(".")+1);
if(extend==""){
alert("请选择头像");
returnfalse;
}
else{
if(!(extend=="jpg"||extend=="png")){
alert("请上传后缀名为jpg或png的文件!");
returnfalse;
}
}
returntrue;
}
</script>
<formmethod="post"action="http://up.qiniu.com"name="form"enctype="multipart/form-data"onsubmit="returnisValidateFile('file');">
<ul>
<inputtype="hidden"id="token"name="token"value=<?phpecho$upToken?>>
<li>
<labelfor="key">key:</label>
<inputname="key"value="">
</li>
<li>
<labelfor="bucket">照片:</label>
<inputname="file"type="file"/>
</li>
<li>
<inputtype="submit"value="提交">
</li>
</ul>
</form>
‘柒’ 关于七牛云存储自定义URL的问题
近段时间将使用七牛云存储来存放用户上传的数据,客户端通过七牛的js-sdk与七牛交互,服务端C#实现了七牛相关的接口。在这过程中多多少少遇到点问题,在这里总结一下。原文: 使用七牛云存储的一些经验总结
599错误处理
如果在与七牛的交互中出现http状态码为599的错误,一句话,不要犹豫,直接联系七牛技术支持 。七牛的文档也在很多地方提到这个错误,都是指导大家去联系技术支持的。笔者是在分块上传后的 mkfile 调用时出现的,联系技术支持后,说是调整了一下,让我重试。后来就好了...
分块上传无法从回调中获得文件的原始名
简单上传采用的是multipart/form-data方式上传,七牛服务端能够从请求中获得文件的原始名,并支持使用魔法变量 $(fname) 回调业务服务器。不过当使用分片上传的时候情况有所不同。分片上传需要在最后调用 mkfile ,来将分片拼接起来。但是, mkfile 接口支持普通的请求,并没有附带文件名,所以七牛也就无法获得文件名,此时从 $(fname) 中是取不到文件名的。这个问题我也向七牛技术支持提交了问题,得到的结果是使用自定义变量 mkfile 支持将自定义变量放在url中,回调的时候自定义变量可以传递给业务服务器。
慎用图片预处理
七牛云支持很多对文件的预处理,其中最常用的应该就是图片预处理了,可以对图片的大小做变换等。七牛推荐使用GET的方式直接指定图片处理结果的url,像这样:
http://qiniuphotos.qiniudn.com/gogopher.jpg?imageView2/1/w/200/h/200
处理后的图片会自动缓存,用户不用关心,只要每次访问都用这个url就行了。然而,笔者在开始的时候,为了保持与其他文件形式统一的处理方法,对图片使用了预处理(因为视频什么的只能预处理),即在token中指定了预处理。此时问题出现了,从后台的日志看到,图片的预处理通知回调竟然比正常的上传成功回调还要快!这就导致预处理结果到来之前,我的业务服务器的数据库中还没有这个图片,无法保存预处理结果了。所以 推荐还是使用url直接处理,对图片要慎用预处理
视频文件无法快进播放
通常用户在观看视频的时候都会根据自己的喜好,快速将视频定位到指定的时间播放。实现这个功能,需要视频本身有关键帧信息、服务端需要支持关键帧播放请求,在 这篇文章 中有详细讨论。
但是笔者发现,在使用七牛云转化后的视频,这样做是无效的。于是咨询技术支持,得到的答案是:转化的文件是具有关键帧的,但七牛使用CDN加速,所以关键帧请求需要CDN的支持,如果想要用这个功能的话,需要单独联系销售或技术支持在CDN上配置,而且时间比较长。笔者联系了销售和技术支持,说是帮我配置,但到现在还没有搞定,因为最近这个也不是特别重要,所以也没有跟下去。
Callback校验
这是可选的一个步骤。由于七牛云会在上传完成之后回调业务服务器,所以理论上说业务服务器需要校验这个回调的合理性。原理在七牛的 文档 中有,需要用到 HMAC-SHA1 签名函数。但是七牛的sdk中没有提供直接的方式来做校验,在研读文档、多次失败和查看sdk源码后,笔者终于校验成功了。关键的分歧在于,文档中的这句话:
获取明文:data = Request.URL.Path +”\n” +Request.Body
这里的 Request.URL.Path 是否包含Querystring?答案是包含的!下面是笔者C#服务端的校验代码,使用的是ASP.NET Web Api:
```C#
byte[] key = System.Text.Encoding.UTF8.GetBytes(Qiniu.Conf.Config.SECRET_KEY);
using (HMACSHA1 hmac = new HMACSHA1(key))
{
var t = filterContext.Request.Content.ReadAsStringAsync();
t.Wait();
string rawbody = t.Result;
log.DebugFormat("request's rawbody : {0}", rawbody);
string text = filterContext.Request.RequestUri.PathAndQuery + "\n" + rawbody;
log.DebugFormat("PathAndQuery + \n + rawbody : {0}", text);
byte[] digest = hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(text));
string computed = Qiniu.Util.Base64URLSafe.Encode(digest);
log.DebugFormat("Computed hash after base64 : {0}", computed);
IEnumerable<string> auths;
if (filterContext.Request.Headers.TryGetValues("Authorization", out auths) && auths.Count() == 1)
{
string auth = auths.First();
log.DebugFormat("Authorization in header : {0}", auth);
if (auth.StartsWith("QBox "))
{
var arr = auth.Substring(5).Split(':');
if (arr.Length == 2)
{
if (arr[1] != computed)
{
log.ErrorFormat("Authorization failed. Since auth from header {0} not equals computed {1}", arr[1], computed);
}
else
{
log.Debug("Authorization success.");
//only pass can be return
return;
}
}
else
{
log.Error("Callback Authorization's format is invalid, can not find two part after split by ':'.");
}
}
else
{
log.Error("Callback Authorization's format is invalid, missing leading 'QBox '.");
}
}
else
{
log.Error("The request from qiniu callback is missing 'Authorization'");
}
filterContext.Response = filterContext.Request.CreateResponse(System.Net.HttpStatusCode.Forbidden);
}
如下几个注意点:
- 明文应当是请求的path+querystring部分和rawbody
- 对于.NET而言,明文和key都需要用UTF-8编码变换成字节才能进行签名。而php中的hash_hmac函数完全不用这么复杂...
- 签名的结果再用base64的url安全的方式编码,再与请求的http头部的Authorization比较
建议官方在文档中加入一些相对底层一些的编程语言的实现,php太高端了...
## js-sdk实现略显粗糙 ##
在使用过程中,我发现[官方的js-sdk](https://github.com/qiniupd/qiniu-js-sdk/)有几个我觉得不好的地方:
**不能为每个文件获取UpToken**
试想,在文件上传过程中有获取UpToken是必须的,而且UpToken又需要包含预处理指令,不同的文件显然需要不同的UpToken,而在js-sdk的实现中,只在初始化这个上传组件对象的时候请求一次上传凭证,后面所有的上传都需要使用这个预先得到的UpToken:
```javascript
uploader.bind('Init', function(up, params) {
getUpToken();
});
于是我修改了这部分,在 BeforeUpload 事件中请求UpToken。建议官方考虑更改这个地方
只能实现分片上传,无法断点续传
js-sdk的实现在分片上传的实现上,是很简单的,不仅没有使用分片,而是分块(一块4m,调用mkblk),而且没有实现持久化ctx,或者类似的回调或接口。4m分块这个问题还可以不追究,没有实现持久化ctx就说不过去了,不持久化怎么实现断点续传撒?!就算不实现,也应该给出回调的入口,让调用者来实现持久化,而我实在无法找到这个'空子'可钻,只能直接在源码上改动了。
没有复用流行类库的东西
这个其实算不上问题,因为作为一个不依赖jquery的sdk,当然不能使用jquery现成的东西,比如ajax。不依赖jquery就算了,依赖plupload是几个意思嘛,还依赖全局对象...于是最后,我干脆自己将sdk改成了Backbone的类,将不要的东西统统去掉,使用jquery和underscore简化代码了...
‘捌’ 如何用七牛来配置一个php网站
下载PHP5: http://cn2.php.net/distributions/php-5.2.6-Win32.zip
下载apache: http://down.chinaz.com/soft/18000.htm
一.php的安装与调试
由于php是一个zip文件(非install版),安装较为简单,解压就行。把解压的 php5.2.1-Win32重命名为 php5。并复制到C盘目录下。即安装路径为 c:\php5
1 找到php目录下的 php.ini-dist或 php.ini.recommended文件,重命名为 php.ini
并复制到系统盘的windows目录下(以c:\windows为例).
2 再把php目录下的php5ts.dll,libmysql.dll复制到目录 c:\windows\system32下。
3 把php5\ext目录下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件复制到c:\windows\system32下
如果没有加载 php_gd2.dll php将不能处理图像。没有加载php_mysql.dll php将不支持mysql函数库
php_mbstring.dll在后面使用phpmyadmin时支持宽字符。
4 打开c:\windows\php.ini文件(关联到mysql)
设置扩展路径
查找 extension_dir 有这么一行extension_dir = "./"
将此行改成
extension_dir = "C:\php5\ext"
其中C:\php5是你安装php的路径。路径不正确将无法加载dll
(注意:有些php版本是 ;extension_dir = "./" 要把前面的分号去掉)
查找 extension
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_mysql.dl
把上面3项前面的分号去掉,这样apache启动时就可以加载这些dll了
当然前面我们也把这些dll复制到system32下了l
php5时差问题
<?php echo date("Y-m-d H:i:s");?>时间相差八小时
为什么呢?PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时
查找date.timezone有这么一行
;date.timezone =
将;去掉,改成
date.timezone = PRC
二.apache的调试和整合
1.修改网站根目录
查找 DocumentRoot有这么一行
DocumentRoot"C:/Program Files/Apache Group/Apache2/htdocs"
这就是你网站的根目录,你可以修改,也可以用默认的.如果改,还要修改下面这项,否则可能会出现 403 错误
查找 This should be changed to whatever you set DocumentRoot to
在它下面两行有
<Directory "C:/Program Files/Apache Group/Apache2/htdocs">
把上面两项的 C:/Program Files/Apache Group/Apache2/htdocs 改成你想要的目录
2.让apache支持*.php(网页)
查找 DirectoryIndex index.html index.html.var
修改成
DirectoryIndex index.html index.html.var index.php
这样index.php 可以充当默认页面了
3.Apache中模块化安装php
查找 # LoadMole foo_mole moles/mod_foo.so
在此行后加入一行
LoadMole php5_mole C:/php5/php5apache2.dll //注意:其中C:/php5/php5apache2.dll是你安装php的相应路径.不要把php5apache2.dll和php5apache.dll混淆.php5apache.dll只适用于apache 版本1的.PHP5压缩包里的php5apache2.dll只适用于apache2.0.*版本,如果是2.2.*以上版本,就可能会出现"Cannot load C:/php/php5apache2.dll into server: The specified mole could not be found."或者:"The requested operation has failed"
4.查找 AddType application/x-gzip .gz .tgz
在此行后加入一行
AddType application/x-httpd-php .php (记住:前边有一个空格哦!!!)
这样apache就可以解释php文件了
5.测试
在网站根目录下创建一个 phpinfo.php 文件
<?php
phpinfo();
?>
在浏览器打开
http://localhost/phpinfo.php
5.测试php和mysql数据库的关联
在网站根目录下创建一个test.php 文件
<?php
$link=mysql_connect("localhost","root","12345"); //12345改成你的mysql密码
if(!$link) echo "失败!";
else echo "成功!";
mysql_close();
?>
在浏览器打开 http://localhost/test.php
如果输出成功,则说明大功告成了
‘玖’ 七牛云存储中的数据库处理功能支持扩展么
你好,你说的是数据库处理还是数据处理?数据库处理这个我不是很清楚,不过我知道七牛数据处理是支持扩展的。