我正在使用Coldfusion8/MySQL 5.0.88
并进行产品搜索,我正在尝试添加一些自定义搜索统计信息。
我有一个表格来保存产品搜索点击,我现在正在寻找最好和最省时的方法来填充它。
我会像这样在表格中插入条目:
<cfquery datasource="db">
INSERT INTO statistics_search_hits ( iln, artikelnummer, source, viewed, zeitstempel )
VALUES( <cfqueryparam value = "#results.sellerID#" cfsqltype="cf_sql_varchar" maxlength="13">
, <cfqueryparam value = "#results.style#" cfsqltype="cf_sql_varchar" maxlength="35">
, <cfqueryparam value = "#Session.skin#" cfsqltype="cf_sql_varchar" maxlength="13">
, "detail"
, now()
)
</cfquery>
如果我正在提取单个记录(detail
),这很容易包含,但我想知道存储通用搜索的内容和方法。
假设用户正在进行返回500结果的搜索,我一次只会显示24个,但为了获得正确的统计信息,我必须在我的点击计数器中输入500个条目。
问题:
最好的方法是什么?我想在用户继续浏览页面时使用CFThread
来运行,但我甚至不确定我想要500次访问数据库。欢迎任何关于良好方法的指示。
谢谢!
PS:我不想为此使用Google Analytics。
答案 0 :(得分:1)
这可能不是您正在寻找的,但您当然可以使用分号连接MS-SQL语句。
INSERT INTO statistics_search_hits ( iln, artikelnummer, source, viewed, zeitstempel )
VALUES( <cfqueryparam value = "#results.sellerID#" cfsqltype="cf_sql_varchar" maxlength="13">
, <cfqueryparam value = "#results.style#" cfsqltype="cf_sql_varchar" maxlength="35">
, <cfqueryparam value = "#Session.skin#" cfsqltype="cf_sql_varchar" maxlength="13">
, "detail"
, now()
);
INSERT INTO statistics_search_hits ( iln, artikelnummer, source, viewed, zeitstempel )
VALUES( <cfqueryparam value = "#results.sellerID#" cfsqltype="cf_sql_varchar" maxlength="13">
, <cfqueryparam value = "#results.style#" cfsqltype="cf_sql_varchar" maxlength="35">
, <cfqueryparam value = "#Session.skin#" cfsqltype="cf_sql_varchar" maxlength="13">
, "detail"
, now()
)
INSERT INTO statistics_search_hits ( iln, artikelnummer, source, viewed, zeitstempel )
VALUES( <cfqueryparam value = "#results.sellerID#" cfsqltype="cf_sql_varchar" maxlength="13">
, <cfqueryparam value = "#results.style#" cfsqltype="cf_sql_varchar" maxlength="35">
, <cfqueryparam value = "#Session.skin#" cfsqltype="cf_sql_varchar" maxlength="13">
, "detail"
, now()
);
您可以将语句写入文件,并让MySQL按计划导入它们。因此,您可以将文件写入日志记录目录,然后进入CFSCHEDULE / CFEXECUTE进程并按计划处理文件。
你也可以尝试一下方便的INSERT INTO ... SELECT语句。如果您的搜索结果仍然来自数据库,您可以设计一个SELECT语句,从数据库重建相同的结果,并使用CF中的一些常量批量插入它。
INSERT INTO statistics_search_hits ( iln, artikelnummer, source, viewed, zeitstempel )
SELECT #reseller_id# as iln, searchtable.article, searchtable.source, 1, #now()#
FROM SearchTable
WHERE [search criteria statements here...]
最后,您可以构建一个存储过程来将批量条目传递给SQL服务器。
传递查询数据的CFThread听起来也是一个好主意,但如果你有一个繁忙的网站,你最好注意可能产生多少线程,特别是如果用户不断执行搜索。检查您的ColdFusion版本中的CF线程限制以及管理员中的设置。
希望这些通用指针有所帮助! ^ _ ^