| @@ -69,17 +69,20 @@ def _get_avg_views(site, article): | |||||
| def _update_views(cursor, site, title, ns): | def _update_views(cursor, site, title, ns): | ||||
| cache_life = "7 DAY" | cache_life = "7 DAY" | ||||
| query1 = """SELECT tl_from, page_title | |||||
| query1 = """DELETE FROM cache | |||||
| WHERE cache_time < DATE_SUB(NOW(), INTERVAL {1})""" | |||||
| query2 = """SELECT tl_from, page_title | |||||
| FROM {0}.templatelinks | FROM {0}.templatelinks | ||||
| LEFT JOIN {0}.page ON tl_from = page_id | LEFT JOIN {0}.page ON tl_from = page_id | ||||
| LEFT JOIN cache ON tl_from = cache_id | LEFT JOIN cache ON tl_from = cache_id | ||||
| WHERE tl_title = ? AND tl_namespace = ? AND tl_from_namespace = 0 AND | |||||
| (cache_id IS NULL OR cache_time < DATE_SUB(NOW(), INTERVAL {1}))""" | |||||
| query2 = """INSERT INTO cache (cache_id, cache_views, cache_time) | |||||
| WHERE tl_title = ? AND tl_namespace = ? AND tl_from_namespace = 0 | |||||
| AND cache_id IS NULL""" | |||||
| query3 = """INSERT INTO cache (cache_id, cache_views, cache_time) | |||||
| VALUES (?, ?, NOW()) ON DUPLICATE KEY | VALUES (?, ?, NOW()) ON DUPLICATE KEY | ||||
| UPDATE cache_views = ?, cache_time = NOW()""" | UPDATE cache_views = ?, cache_time = NOW()""" | ||||
| cursor.execute(query1.format(SITE_DB, cache_life), (title, ns)) | |||||
| cursor.execute(query1.format(cache_life)) | |||||
| cursor.execute(query2.format(SITE_DB), (title, ns)) | |||||
| while True: | while True: | ||||
| titles = cursor.fetchmany(1024) | titles = cursor.fetchmany(1024) | ||||
| if not titles: | if not titles: | ||||
| @@ -88,7 +91,7 @@ def _update_views(cursor, site, title, ns): | |||||
| viewcounts = [(pageid, _get_avg_views(site, name)) | viewcounts = [(pageid, _get_avg_views(site, name)) | ||||
| for (pageid, name) in titles] | for (pageid, name) in titles] | ||||
| parambatch = [(i, v, v) for (i, v) in viewcounts if v is not None] | parambatch = [(i, v, v) for (i, v) in viewcounts if v is not None] | ||||
| cursor.executemany(query2, parambatch) | |||||
| cursor.executemany(query3, parambatch) | |||||
| def _compute_stats(db, page): | def _compute_stats(db, page): | ||||
| title = page.title.split(":", 1)[-1].replace(" ", "_") | title = page.title.split(":", 1)[-1].replace(" ", "_") | ||||