⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rb_storage_db_normal.php

📁 linux下安装不上mysql5与php5的可用此关联
💻 PHP
字号:
<?php require_once('abstract.php');require_once('config.php');class rb_storage_db_normal extends rb_storage_db {    public function init() {       parent::init();       if (!mysqli_query($this->link, "        CREATE TABLE IF NOT EXISTS rb_res_normal_times (            id INT AUTO_INCREMENT PRIMARY KEY,            fk_run_id INT NOT NULL,                        label VARCHAR(255) NOT NULL,                         runtime DECIMAL(9,6) NOT NULL,                 INDEX(fk_run_id),            FOREIGN KEY (fk_run_id) REFERENCES rb_res_run(run_id),            INDEX(label),            INDEX(runtime)        ) Engine = InnoDB")) {      throw new Exception(sprintf("Cannot create table rb_res_normal_times, [%d] %s\n", mysqli_errno($this->link), mysqli_error($this->link)));    }      }      public function save($run_label, $run_datetime, $file, $binary_file, $binary_label, $data) {        $fk_run_id = $this->saveRuninfo($run_label, $run_datetime, $file, $binary_file, $binary_label);        foreach ($data['times'] as $label => $time) {      if (!mysqli_query($this->link, sprintf('INSERT INTO rb_res_normal_times            (fk_run_id, label, runtime) VALUES (%d, "%s", %f)',          $fk_run_id, mysqli_real_escape_string($this->link, $label), $time))) {                        $msg = sprintf("Cannot insert into rb_res_normal_times, [%d] %s\n", mysqli_errno($this->link), mysqli_error($this->link));                        try {              $this->delete($run_label);            } catch (Exception $e) {              throw new Exception(sprintf("%s\n%s\n", $msg, $e->getMessage()));            }            throw new Exception($msg);      }          }         }    public function delete($run_label) {          if (!mysqli_query($this->link, sprintf('DELETE FROM rb_res_normal_times WHERE label = "%s"',             mysqli_real_escape_string($this->link, $run_label)))) {        throw new Exception(sprintf("Cannot delete from rb_res_normal_times, [%d] %s\n", mysqli_errno($this->link), mysqli_error($this->link)));      }        }    public function deleteBefore($run_datetime) {        if (!mysqli_query($this->link, sprintf('DELETE FROM rb_res_normal_times WHERE runtime <= "%s"',             mysqli_real_escape_string($this->link, $run_datetime)))) {        throw new Exception(sprintf("Cannot delete from rb_res_normal_times, [%d] %s\n", mysqli_errno($this->link), mysqli_error($this->link)));    }      }    public function deleteAll() {        if (!mysqli_query($this->link, sprintf('DELETE FROM rb_res_normal_times'))) {        throw new Exception(sprintf("Cannot delete from rb_res_normal_times, [%d] %s\n", mysqli_errno($this->link), mysqli_error($this->link)));    }      }    public function reset() {        if (!mysqli_query($this->link, "DROP TABLE IF EXISTS rb_res_normal_times")) {      throw new Exception(sprintf("Cannot create table, [%d] %s\n", mysqli_errno($this->link), mysqli_error($this->link)));    }    try {      parent::reset();    } catch (Exception $e) {      // igore issues dropping rb_res_run ?      print $e->getMessage();          }  }  public function getRuntimes($run_label, $file, $run_datetime, $binary_label, $binary_file) {        if (!$res = mysqli_query($this->link, $sql = $this->mySprintf('        SELECT           r2.label AS label,           r2.runtime AS runtime         FROM           rb_res_run r1,          rb_res_normal_times r2        WHERE           r1.run            = "%s" AND          r1.file           = "%s" AND          r1.label          = "%s" AND          r1.binary_label   = "%s" AND          r1.binary_file    = "%s" AND          r2.fk_run_id      = r1.run_id        ORDER BY          r2.id',        $run_datetime,        $file,        $run_label,        $binary_label,        $binary_file))) {      throw new Exception(sprintf("Cannot fetch runtimes, [%d] %s\n", mysqli_errno($this->link), mysqli_error($this->link)));    }        $runtimes = array();    while ($row = mysqli_fetch_assoc($res)) {      $runtimes[$row['label']] = $row['runtime'];    }    mysqli_free_result($res);    return $runtimes;      }     public function getFastestBinaries($run_label, $run_datetime) {        if (!$res = mysqli_query($this->link, $this->mySprintf('          SELECT             COUNT(*) AS num,             r1.file AS file,            r1.binary_label AS binary_label,            t1.label AS time_label          FROM rb_res_run AS r1             INNER JOIN rb_res_normal_times AS t1 ON (t1.fk_run_id = r1.run_id)             INNER JOIN rb_res_run AS r2 ON (r1.run_id <> r2.run_id AND r1.run = r2.run AND r1.label = r2.label AND r1.file = r2.file)             INNER JOIN rb_res_normal_times AS t2 ON (t2.fk_run_id = r2.run_id AND t1.label = t2.label AND t1.runtime < t2.runtime)           WHERE             r1.run = "%s" AND r1.label = "%s"          GROUP BY             r1.binary_label, t1.label           HAVING             num = (SELECT (COUNT(DISTINCT(binary_label)) - 1) FROM rb_res_run WHERE run = "%s" AND label = "%s")          ORDER BY            r1.file         ',        $run_datetime,        $run_label,                $run_datetime,        $run_label))) {      throw new Exception(sprintf("Cannot find fastest, [%d] %s\n", mysqli_errno($this->link), mysqli_error($this->link)));    }var_dump($sql);    $fastest = array();    while ($row = mysqli_fetch_assoc($res)) {      $fastest[$row['file']][$row['time_label']] = $row['binary_label'];    }    mysqli_free_result($res);        return $fastest;  }      public function getFastestBinaryByFile($run_label, $run_datetime, $file) {        if (!$res = mysqli_query($this->link, $this->mySprintf('          SELECT             COUNT(*) AS num,             r1.binary_label AS binary_label,            t1.label AS time_label          FROM rb_res_run AS r1             INNER JOIN rb_res_normal_times AS t1 ON (t1.fk_run_id = r1.run_id)             INNER JOIN rb_res_run AS r2 ON (r1.run_id <> r2.run_id AND r1.run = r2.run AND r1.label = r2.label AND r1.file = r2.file)             INNER JOIN rb_res_normal_times AS t2 ON (t2.fk_run_id = r2.run_id AND t1.label = t2.label AND t1.runtime < t2.runtime)           WHERE             r1.run = "%s" AND r1.label = "%s" AND r1.file = "%s"          GROUP BY             r1.binary_label, t1.label           HAVING             num = (SELECT (COUNT(*) - 1) FROM rb_res_run WHERE run = "%s" AND label = "%s" AND file = "%s")',        $run_datetime,        $run_label,        $file,        $run_datetime,        $run_label,        $file))) {      throw new Exception(sprintf("Cannot find fastest, [%d] %s\n", mysqli_errno($this->link), mysqli_error($this->link)));    }    $fastest = array();    while ($row = mysqli_fetch_assoc($res)) {      $fastest[$row['time_label']] = $row['binary_label'];    }    mysqli_free_result($res);        return $fastest;  }  }?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -