基本上我需要允许用户提交代码以便在服务器端定期运行。
用户应该提交简单的脚本,我将运行他们的代码服务器端来确定谁想出了更好的解决方案。我创建了一个简单的提交表单,代码存储在SQL数据库中。
我显然担心安全,但我也不知道使用哪种语言。我需要一个简单的脚本语言,让我限制用户可以做的事情(我只需要让他们定义变量,创建函数,使用循环和一些数组和代数函数)。甚至可能用简单的语法创建一个伪语言。
基本上是这样的:
答案 0 :(得分:1)
如果这项任务落在了我的腿上,我会调查蟒蛇virtualenv,这样我就有了一个孤立的环境。那么显然我会确定运行上传程序的脚本的权限。
这也意味着您可以为使用此服务的每个用户设置python环境。
好吧,cron工作。
确实,但是答案的范围并不适合这里。但谷歌DSL或领域特定语言,你一定会找到一些教程。
答案 1 :(得分:0)
如果你专门针对PHP,你可以使用runkit扩展 - 专门用于运行用户提供的PHP代码:
http://www.php.net/manual/en/intro.runkit.php
还有一个较新的runkit项目可用(尽管你必须手动编译):
答案 2 :(得分:0)
Q1。我可以用什么语言?
A1。几乎任何。因为编译器会增加系统的复杂性,所以最好使用解释(或JIT编译)语言。
Q2。如何定期运行用户代码? (只知道cronjobs,但我不知道他们是否允许长时间执行)
A2。 cron工作可能是要走的路。它不关心执行时间。但是,这意味着确保只在先前的运行完成后才重新启动作业(假设这是您希望它执行的操作),这是您的工作。
Q3。创建一个伪语言会是个好主意吗?如果是,请指出我正确的方向
A3。发明轮子很少是一个好主意。你可以做到这一点,但有合理的怀疑,这是必要和/或可取的。
我的个人指针将转向JavaScript作为脚本语言 - 因为它非常普遍,有大量的工具和文档。因此,您可能希望查看Node.js和this sandboxing model以在服务器端运行它。