Example #1
0
	function check() {

		//ajaxリクエスト以外
		if( !$this->RequestHandler->isAjax() ) {
			$this->set("result" , array("result" => "not ajax"));
			return;
		}

		//パラメータ解析
		$u_userid=$this->params['form']['u'];
		$u_id=$this->params['form']['id'];
		if ( $u_userid == "" or $u_id == "" ){
			$this->set("result" , array("result" => "parameter error"));
			return;
		}

		//ファイル名
		$hql_file=DIR_REQUEST."/${u_userid}/${u_id}.hql";
		$out_file=DIR_RESULT."/${u_userid}/${u_id}.out";
		$fin_file=DIR_RESULT."/${u_userid}/${u_id}.fin";
		$pid_file=DIR_RESULT."/${u_userid}/${u_id}.pid";

		//hive処理チェック
		if ( !file_exists($hql_file) ){
			$this->set("result" , array("result" => "file open error", "id" => "$u_id"));
			return;
		}
		if ( !file_exists($out_file) ){
			$this->set("result" , array("result" => "progress", "id" => "$u_id"));
			return;
		}
		list($err_flg,$total_p,$stage_p,$map_p,$reduce_p)=CommonComponent::GetJobInfo($hql_file,$out_file,$fin_file,$pid_file);
		if ( $err_flg >= 100 ){
			$this->set("result" , array("result" => "execute error", "id" => "$u_id"));
			CommonComponent::UpdateRunhistsResult($u_id,501);
			return;
		}

		//子プロセス処理中チェック
		if ( file_exists($pid_file) ){
			$this->set("result" , array("result" => "progress", "id" => "$u_id", "total"=>"$total_p", "stage"=>"$stage_p", "map"=>"$map_p", "reduce"=>"$reduce_p"));
			return;
		}

		//結果ファイルの一覧を取得
		$filnms=CommonComponent::GetResultFiles($fin_file);
		if ( $filnms == "" ){
			$this->set("result" , array("result" => "unknown error", "id" => "$u_id"));
			CommonComponent::UpdateRunhistsResult($u_id,503);
			return;
		}

		#サイズ制限あり
		if ( $err_flg != 0 ){
			$this->set("result" , array("result" => "warning", "id" => "$u_id", "filnm" => "$filnms"));
			CommonComponent::UpdateRunhistsResult($u_id,401);
			return;
		}
		
		//処理終了
		$this->set("result" , array("result" => "ok", "id" => "$u_id", "filnm" => "$filnms"));
		CommonComponent::UpdateRunhistsResult($u_id,200);
	}