ホームページ > バックエンド開発 > PHPチュートリアル > バーチャルジャッジシステム開発2:提出モジュール

バーチャルジャッジシステム開発2:提出モジュール

WBOY
リリース: 2016-06-23 13:07:32
オリジナル
1193 人が閲覧しました

今回は提出モジュールについて話します。

この記事を書く前にインターネットを閲覧しているときに、誰かが VJ の合法性と道徳性について議論しているのを見かけましたが、この記事ではそれらについては触れません。私たちはテクノロジーについてのみ関心を持っています。

PHP を使用して送信を実装するため、curl を使用する必要があります。ただし、どのメソッドを使用しても、PHP はデフォルトでカールのサポートを有効にしません。これ以上の説明はせずに、次のコードを貼り付けるだけです。 =

"forskvj", $id = "1000", $lang = "0", $code = "", $rid = "") {

if (DEBUG)

echo "[D] => ; $user, $pass, $id, $lang, $ridn"; //MySQL $this->db = new dMySQL(); //情報 $cookie_file =

tempnam("./cookie", "cookie " ); $login_url = "http://poj.org/login";

$post_fields = "user_id1=".$user."&password1=".$pass."&url=/";

$this- > ;rid = $rid; $this->pid = $id; $this->lang = $lang;

$this->user = $user;

// $ curl_init($ login_url); curl, CURLOPT_POST, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS, $post_fields);

$this->data =curl_exec($curl);

//$hint_code = /を送信"// ".$rid."n"./$code; $post_fields =

'problem_id='.$id.'& language='

.$lang.'&encoded=1&source='.urlencode($ヒント_code) );

//print_r(base64_encode($code)); $curl =

curl_init("http://poj.org/submit");

curl_setopt($curl, CURLOPT_HEADER, 0);カール、CURLOPT_RETURTRANSFER、1);curl_setopt($curl、CURLOPT_COOKIEFILE、

$cookie_file);

curl_setopt($curl、CURLOPT_POSTFIELDS、$post_fields);

$this-> ; data =curl_exec($curl);curl_close($curl);

@unlink($cookie_file);

//レコード情報 $this->info = array(

'id' => $rid,

'user' => $user

);

}

ここでも例として POJ を使用しますが、レコードは POJ が送信された直後に生成されますが、これは HDOJ などの場合には当てはまりません。ここでは、curl を使用して 1 回の送信をシミュレートします。

$pdw = new POJ_DataPoster_Worker($oo_u, $oo_p, $list[$i]['tid'],

$list[$i]['lang'], $list[$i][' code'], $list[$i]['id']); $rrid =

$pdw->getRunID()

ここでインスタンスを作成してコードを送信し、RunID を取得します。はリモート レコード ID です。上で述べたように、レコードは送信後に生成されます。これは、すぐに直接取得するだけです。もちろん、キャプチャできなかった場合は送信エラーとなり、それ以上の情報はありません。もちろん、一度キャプチャされると、継続的にステータスをクエリしてローカル レコードを更新するだけで済みます。

上記のクロールには、現在送信しているレコードを判断する方法という問題があります。計画は次のとおりです。

1 アカウントは別個のキューで送信されます。

2. 各クエリは、すべてではなく、このアカウントによって送信されたレコードのみをクエリします。

3. すべてのソース コードを取得して照合するために使用されるコメントをコードに追加します。

ここで、3 は理論的には最初の 2 つに対して冗長です。最初の 1 つだけを取得してください。ただし、毎回 1 ページがキャプチャされるため、この仕組みが追加されます。ちなみに、保険が最も重要です。

公開日: 2016 年 5 月 4 日午後 1 時 31 分

最終編集日: 2016 年 5 月 4 日午後 1 時 55 分

この記事は SpringHack によって作成され、クリエイティブ コモンズ表示 4.0 国際ライセンスの下でライセンスされています

転載・引用は自由ですが、著者の署名と記事の出典の明記が必要です

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート