function do_pings()
{
global $wpdb, $vaultpress_pings, $__vp_recursive_ping_lock;
if (defined('WP_IMPORTING') && constant('WP_IMPORTING')) {
return;
}
if (!isset($wpdb)) {
$wpdb = new wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
$close_wpdb = true;
} else {
$close_wpdb = false;
}
if (!$vaultpress_pings['count']) {
return;
}
// Short circuit the contact process if we know that we can't contact the service
if (isset($__vp_recursive_ping_lock) && $__vp_recursive_ping_lock) {
$this->ai_ping_insert(serialize($vaultpress_pings));
if ($close_wpdb) {
$wpdb->__destruct();
unset($wpdb);
}
$this->reset_pings();
return;
}
$ping_attempts = 0;
do {
$ping_attempts++;
$rval = $this->contact_service('ping', array('args' => $vaultpress_pings));
if ($rval || $ping_attempts >= 3) {
break;
}
if (!$rval) {
usleep(500000);
}
} while (true);
if (!$rval) {
$__vp_recursive_ping_lock = true;
$this->ai_ping_insert(serialize($vaultpress_pings));
}
$this->reset_pings();
if ($close_wpdb) {
$wpdb->__destruct();
unset($wpdb);
}
return $rval;
}