From 0f8ce0e0df6c438f9e4d0744f79d431e4c892ea6 Mon Sep 17 00:00:00 2001 From: Ryan Boren Date: Tue, 21 Jul 2009 19:44:21 +0000 Subject: [PATCH] Process waiting pings a half hour after the last ping to avoid spamming ping sites. Don't make a ping wait if the last ping was more than half an hour ago. Props VoxPelli. fixes #6698 for trunk git-svn-id: https://develop.svn.wordpress.org/trunk@11732 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-includes/comment.php | 2 ++ wp-includes/post.php | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/wp-includes/comment.php b/wp-includes/comment.php index 448ef1769d..72914b5ae7 100644 --- a/wp-includes/comment.php +++ b/wp-includes/comment.php @@ -1435,6 +1435,8 @@ function generic_ping($post_id = 0) { weblog_ping($service); } + set_transient('generic_ping_last', time(), 1800); + return $post_id; } diff --git a/wp-includes/post.php b/wp-includes/post.php index 0c0ba46d6d..f5439dd980 100644 --- a/wp-includes/post.php +++ b/wp-includes/post.php @@ -3274,9 +3274,15 @@ function _transition_post_status($new_status, $old_status, $post) { if ( '' == get_the_guid($post->ID) ) $wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post->ID ) ), array( 'ID' => $post->ID ) ); do_action('private_to_published', $post->ID); // Deprecated, use private_to_publish - // do generic pings once per hour at most - if ( !wp_next_scheduled('do_generic_ping') ) - wp_schedule_single_event(time() + 3600, 'do_generic_ping'); + // do generic pings once per half hour at most + if ( !wp_next_scheduled('do_generic_ping') ) { + $schedule = time(); + $last_ping = get_transient('generic_ping_last'); + if ($last_ping) { + $schedule = max($schedule, $last_ping + 1800); + } + wp_schedule_single_event($schedule, 'do_generic_ping'); + } } // Always clears the hook in case the post status bounced from future to draft.