微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HUSTOJ随笔7-SAE部署

SAE(sina application engine) 是新浪的云计算平台,最大的特点是跟LAMP平台几乎无缝的兼容性。

因此在SAE上部署HUSTOJ的Web部分是完全没有问题的,只需在db_info.inc.PHP设置

static  $OJ_SAE=true; 

然后参考

http://code.google.com/p/hustoj/wiki/HTTPJudge

进行judged的配置。

这里需要说明的是,新浪云平台具有较多的安全限制,支持的计算平台仅限web,并不能支持编译、运行、监控等操作。

所以,必须另行架设判题机运行judged/judge_client,但是由于SAE已经提供了公网Web出口,所以对于没有自己互联网出口的学校来说就是非常难得的资源。

而judged可以在内网运行,甚至可以不必24小时在线,比如只在8-16点(上班时间)在线,老师可以用自己办公室的机器上装个虚拟机的方式来解决

实际上HTTPJudge的运行机制正是为SAE量身打造的。

因为传统的judged必须连接MysqL来轮询和完成任务,而SAE没有提供外部网络连接MysqL的机制,这就逼迫我思考如何让judged能够连接到SAE数据库上去。

因为SAE唯一的对外出口就是Web(HTTP),因此在HTTP基础上实现一套判题任务的查询、更新机制就是最直接的答案。

当然有很多标准可以采纳,如WebService,XML-RPC,json-rpc等,但是由于我比较懒、也比较笨,所以就自行定制了一套最为简化的实现,类似Unix的管道流的文本界面。


此外,由于SAE不支持文件操作API,所以类似图片上传功能都不能正常运行。有能力的用户可以自行修改代码,使用SAE的Storage功能实现模拟文件操作。

没有开发能力的用户可以在本地搭建完全相同题库和数据的OJ,在加题后采用SAE的SVN界面进行上传同步,可以最大化减少SAE的维护工作量。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐