Some ways to debug code

时间:2013-11-15 作者:CBeTJlu4ok

我有一个BuddyPress安装,有许多自定义代码。

在我将数据库移动到共享主机之前,我已经为生产做好了一切准备。

问题是,在奇怪的地方,所有的活动wp_bp_activity 已删除。

我并不是说这个问题的出现是因为我移动了数据库,但我无法用我的原始安装重现这个错误(但当我在本地计算机上完成托管数据库的新安装时,也遇到了同样的问题)

我的详细信息:

1) 我不相信这个DELETE 使用buddypress本机代码触发,因为所有内容都保持原样wp_bp_activity_meta.

2) 我无法复制这个bug,也无法理解何时会发生这种情况。而且这种情况并不经常发生。可能一天一到两次(甚至两天一次)。这就是为什么它让我发疯的原因)

3) 最有趣的是,它删除了除“like”之外的所有内容。我在使用bp,就像不像Component一样。它删除了所有内容:avatar\\u更改、评论、活动、我自己的组件,但不是bp-like,它只是原始(liked)的副本。

更新:正如@S\\u HA\\u DUM建议的那样SQL 正在删除并发现(在500mb数据中)此请求(php方面没有错误)

DELETE FROM wp_bp_activity WHERE item_id = 0我发现的唯一一件事是wp_bp_activitiydelete buddypress插件中的函数(有人将其命名为:D)。

但仍然找不到此功能的触发位置

我想要一些如何调试此错误的建议。欢迎任何帮助

2 个回复
最合适的回答,由SO网友:CBeTJlu4ok 整理而成

我终于发现了一个错误,我将把它写在这里

问题出在我的代码中:我正在用删除活动item_id 正在删除活动ID。换句话说,我有一个钩子,它是在活动被删除后触发的,我删除了“BuddyPress-LIKE”活动(X喜欢帖子)。

但是有一个cron BBPress触发的作业,用于删除auto\\u草稿帖子(如果有)。由于BBPress可以在BuddyPress中有一个活动,它也会触发“DELETE\\u activity”,但在本例中,$activity\\u id为零(我不知道,可能是因为它不存在,我正在早期挂钩)。

这就是我得到的DELETE FROM wp_bp_activity WHERE item_id = 0

function clean_activity_dollars($activity){
    global $wpdb;
    $activity_table = $wpdb->prefix . \'bp_activity\';
    $wpdb->delete($activity_table, array( \'item_id\' => $activity[\'id\'] ), array(\'%d\'));
}
add_action("bp_before_activity_delete","clean_activity_dollars",10,1);
我改成了这个

$wpdb->delete($activity_table, array( \'item_id\' => $activity[\'id\'], \'type\' => \'activity_liked\' ), array(\'%d\', \'%s\'));
因此,即使item\\u id为零,它也会检查类型。

SO网友:Por

是否在wp config中启用调试。php,你知道,这对于开发主题定义(WP\\u DEBUG,false)非常有用;

结束

相关推荐

WordPress需要BuddyPress来处理大量用户吗?

我知道从技术上讲18446744073709551615 用户(db限制)。但我在一次演讲中听说,由于缓存问题,WP的普通安装实际上不能很好地处理许多用户,特别是如果添加user\\u meta。有人能证实这一点吗?这位发言者建议,为了让wordpress能够更好地处理大量用户,安装BuddyPress是个好主意,但老实说,代码很乱,文档也很少。所以我正在考虑放弃这一点,再次尝试香草口味。有没有人有任何专业知识,可以阐明这一点?