public static function get_read_conn() { if (self::$read_conn === null) { $ds = array_merge(array(self::$daemons['master']), self::$daemons['slaves']); shuffle($ds); $d = $ds[0]; $dsn = $d['host'] . $d['user'] . $d['pass'] . $d['name'] . $d['port']; if (isset(self::$conns[$dsn])) { $conn = self::$conns[$dsn]; } else { $conn = mysqli_connect($d['host'], $d['user'], $d['pass'], $d['name'], $d['port']); if (!$conn) { exit('Cannot connect to slave'); } self::$conns[$dsn] = $conn; } self::$read_conn = $conn; } return self::$read_conn; }
public static function get_source_by_id($source_id) { $sql = "SELECT * FROM source WHERE source_id={$source_id}"; $rs = mysqli_query(friendfeed_config::get_read_conn(), $sql); while ($row = mysqli_fetch_assoc($rs)) { return $row; } return null; }
<?php require_once dirname(__FILE__) . '/snap.php'; while (true) { $conn = friendfeed_config::get_both_conn(); $rs = mysqli_query($conn, "SELECT * FROM source WHERE service = 'baidu_space'"); $sources = array(); while ($row = mysqli_fetch_assoc($rs)) { $sources[] = $row; } foreach ($sources as $source) { snap_baidu_space_item($source['username'], $source['source_id']); } $now = date('Y-m-d H:i:s'); mysqli_query($conn, "UPDATE source SET last_snap = '{$now}' WHERE service = 'baidu_space'"); sleep(86400); }
function snap_sohu_blog_item($username, $source_id) { $content = file_get_contents('http://' . $username . '.blog.sohu.com/rss'); if (strpos($content, '<html') !== false) { return false; } $rss = new MagpieRSS($content, 'UTF-8', 'UTF-8', false); $conn = friendfeed_config::get_both_conn(); $snapday = date('Y-m-d H:i:s'); $new_links = array(); foreach ($rss->items as $item) { $new_links[] = $item['link']; } $sql = "SELECT * FROM item WHERE source_id = '{$source_id}'"; $rs = mysqli_query($conn, $sql); $old_links = array(); while ($row = mysqli_fetch_assoc($rs)) { $old_links[] = $row['link']; } $links = array_diff($new_links, $old_links); $change_ids = array(); foreach ($rss->items as $item) { if (in_array($item['link'], $links)) { $item['title'] = addslashes($item['title']); $item['description'] = addslashes($item['description']); $item['pubdate'] = strtotime($item['pubdate']); $sql = "INSERT INTO item VALUES (NULL, '{$source_id}', '{$snapday}', '{$item['pubdate']}', '0', '{$item['title']}', '{$item['link']}', '" . FEED_BLOG . "', '{$item['description']}', '')"; mysqli_query($conn, $sql); $change_ids[] = mysqli_insert_id($conn); } } if ($change_ids !== array()) { $new_num = count($change_ids); $change_ids = implode('|', $change_ids); $now = date('Y-m-d H:i:s'); $sql = "UPDATE source SET is_new_changed = '1', changes = '{$change_ids}',last_snap = '{$now}' WHERE source_id = '{$source_id}'"; mysqli_query($conn, $sql); $sql = "UPDATE subscribe SET new_num = new_num + {$new_num} WHERE source_id = '{$source_id}'"; mysqli_query($conn, $sql); } return true; }