【发布时间】:2009-06-04 19:48:45
【问题描述】:
我正在编写一个在 cron 上运行的 PHP 脚本,它从 API [标题(文本)、路径(文本)、访问者(整数)] 提取 JSON 数据并将其存储在 SQLite 数据库中。每次运行时,如果它看到现有标题,它应该将新访问者计数添加到现有访问者中。如果没有,它应该将新数据添加为新行。
这是我的循环的简化视图:
foreach($results as $printresults) {
//this iterates though $title, $path and $visitors
$existing_visitors = $db->query("SELECT SUM(visitors) FROM topten WHERE
title='$title'");
while ($existing_vis_row = $existing_visitors->fetch(SQLITE_NUM)) {
$dupe_enter = $db->query("UPDATE topten SET title='$title', path='$path',
visitors='$existing_vis_row[0]' WHERE title='$title' ");
}
$db->query("INSERT INTO topten (id,title,path,visitors,time) VALUES
(NULL, '$title', '$path', '$visitors', '$time');");
}
然后我将执行SELECT 以提取访问者订购的DISTINCT 行并将其写入文件。由于UPDATE 查询将所有访问者添加到这些行中,因此是否存在所有受骗者并不重要。在某个超时时,我会删除整个表并重新开始收集,因此文件不会变得太笨重。
问题在于,它会在循环的每一次传递中添加总访问者计数,从而使访问者计数完全失控。但是我找不到更好的方法来在每次运行脚本时简单地将数据添加在一起。
【问题讨论】: