Skip to content

Instantly share code, notes, and snippets.

@kawa-
Created July 24, 2014 15:07
Show Gist options
  • Save kawa-/67260edaaf4c68cba945 to your computer and use it in GitHub Desktop.
Save kawa-/67260edaaf4c68cba945 to your computer and use it in GitHub Desktop.
とあるテーブルで新規のpairを発見して表示
<?php
# usage: $ php generate_unique_pair_t11.php 10 > unique_pairs_t11.txt
define('NUM_PAIRS', $argv[1]);
define('MAX_USERS', 5000 * 10000);
$dbname = 'db01';
$host = 'localhost';
$user = 'root';
$password = 'root';
$table = 't11';
$pairs = array();
$pdo = new PDO(
'mysql:dbname=' . $dbname . ';host=' . $host . ';charset=latin1', $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => true)
);
while (TRUE) {
if (count($pairs) >= NUM_PAIRS) {
break;
}
$userid = rand(1, MAX_USERS);
$followerid = rand(1, MAX_USERS);
if (select($pdo, $table, $userid, $followerid) === FALSE) {
$pairs[] = array($userid, $followerid);
}
}
foreach ($pairs as $pair) {
echo $pair[0] . "\t" . $pair[1] . "\t" . (time()+rand(-100000000, 100000000)) . "\n";
}
/* $iと$fの組み合わせが存在してればTRUE, 存在しなければFALSE */
function select($pdo, $tablename, $i, $f) {
try {
$stmt = $pdo->prepare("select e from " . $tablename . " where e like :query");
$stmt->bindValue(':query', $i . "-%", PDO::PARAM_STR);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ($row === FALSE) {
return FALSE;
}
return TRUE;
} catch (PDOException $e) {
die("ERROR. " . $e->getMessage());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment