我在自定义模块的退出挂钩中有这个代码:
$diff = round(((microtime(true)-$script_start_time)*1000));
watchdog('thaty', $diff);
if(variable_get('thingy', 0) == 1) {
$data = array(
'q'=>$_GET['q'],
'memory'=>memory_get_peak_usage(),
'execution_time'=>$diff
);
db_query('INSERT INTO {blah} (q,memory,dt,execution_time) VALUES (\'%s\',%b,UNIX_TIMESTAMP(),%b)',$data);
}
$ diff的值有时会一直保存在2147483647数据库中,我相信这是INT的溢出值。当我通过看门狗记录值时,我可以确认它没有设置为2147483647,而是实际值,这是一个三位数的整数。
典型值(通过记录确认):
execution_time列是int(11)。
我似乎找不到这个问题的根源。我尝试过的事情:
答案 0 :(得分:3)
似乎不推荐使用db_query(“INSERT ....”)而使用drupal_write_record()。
在构建查询(而不是数据库问题)时,这肯定是一个掩盖问题,也许这样做会更好。