0

基本的に、サーバー側で定期的に実行するコードをユーザーが送信できるようにする必要があります。

ユーザーは単純なスクリプトを提出する必要があり、私はコード サーバー側を実行して、誰がより良い解決策を思いついたかを判断します。簡単な送信フォームを作成し、コードを SQL データベースに保存しました。

もちろん安全性も心配ですが、どの言語を使えばいいのかもわかりません。ユーザーができることの数を制限できる、簡単な構文を備えたスクリプト言語が必要です (変数の定義、関数の作成、ループ、配列関数、代数関数の使用のみを許可する必要があります)。簡単な構文で擬似言語を作成することもできます。

だから基本的に:

  1. どの言語を使用できますか?
  2. ユーザーコードを定期的に実行するにはどうすればよいですか? (cronjobsについてしか知りませんが、長い実行時間を許可するかどうかはわかりません)
  3. 疑似言語を作成するのは良い考えでしょうか? もしそうなら、私を正しい方向に向けてください
4

3 に答える 3

1
  1. どの言語:まあ、あなたはどんな言語でも使うことができます、ただあなたが最小限の許可を持っていることを確認してください。ただし、RubyやPythonなどのスクリプト言語の方が簡単です。

このタスクが私の膝に当たる場合は、 pythons virtualenvを調べて、分離された環境を作成します。次に、アップロードされたプログラムを実行するスクリプトの権限について、明らかに確認します。

これは、このサービスを使用するユーザーごとにPython環境をセットアップできることも意味します。

  1. そうですね、cronは機能します。

  2. 確かに、しかし、良い答えの範囲は実際にはここに収まりません。しかし、グーグルDSLまたはドメイン固有言語とあなたはいくつかのチュートリアルを見つけるのは確実です。

于 2013-02-16T00:14:13.577 に答える
0

Q1. どの言語を使用できますか?

A1. ほぼすべて。コンパイラはシステムの複雑さを増すため、解釈された (または JIT コンパイルされた) 言語が望ましいでしょう。

Q2. ユーザーコードを定期的に実行するにはどうすればよいですか? (cronjobsについてしか知りませんが、長い実行時間を許可するかどうかはわかりません)

A2. cron ジョブはおそらく進むべき道です。実行時間は気にしません。ただし、それは、前の実行が終了した場合にのみジョブを再起動することを確認するのがあなたの仕事であることを意味します (それがあなたがやりたいことだと仮定して)

Q3. 疑似言語を作成するのは良い考えでしょうか? もしそうなら、私を正しい方向に向けてください

A3. ホイールをめったに発明しないのは良い考えです。これを行うこともできますが、それが必要であり、かつ/または推奨されるという合理的な疑いがあります。

私の個人的な指針は、スクリプト言語としての JavaScript に向けられています。JavaScript は非常に広く普及しているため、ツールやドキュメントがたくさんあります。そのため、 Node.jsこのサンドボックス モデルを調べて、サーバー側で実行することをお勧めします。

于 2013-02-25T22:10:37.317 に答える
0

特に PHP をターゲットにしている場合は、ユーザー提供の PHP コードを実行するために特別に作成された runkit 拡張機能を使用できます。

http://www.php.net/manual/en/intro.runkit.php

利用可能な新しい runkit プロジェクトもあります (ただし、手動でコンパイルする必要があります)。

https://github.com/zenovich/runkit/

于 2013-02-16T00:19:29.440 に答える