今回は提出モジュールについて話します。
この記事を書く前にインターネットを閲覧しているときに、誰かが 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 国際ライセンスの下でライセンスされています
転載・引用は自由ですが、著者の署名と記事の出典の明記が必要です