0

what are the alternative function for mysql_free_result and mysql_ping in WordPress functions , does WordPress function provides all the functions like php ? is it necessary to Free result memory for large WordPress database requests ?

1 Answer 1

2

You have the following methods of the $wpdb object:

  • $wpdb->flush() that contains a call to mysqli_free_result() or mysql_free_result() if not supported.

  • $wpdb->check_connection() that contains a call to mysqli_ping() or mysql_ping() if not supported.

You can of course use all your PHP functions in WordPress.

Here's an example based on the \wpdb class itself:

// Use the global instance created by WordPress
global $wpdb;

// Fetch our data with some huge query:
$results = $wpdb->get_results( "SELECT * FROM {$wpdb->posts}" );    

// ... some data handling here

// Let's flush for another huge query.
// But that's not actually needed, 
// since this is already done in the $wpdb->query() call
// that's used within the $wpdb->get_results() method.
$wpdb->flush();

// Check the connection:
if( ! $wpdb->check_connection( $allow_bail = false ) ) 
{
    // Let's try to connect again, but there has already been
    // reconnection retries within the check_connection() method above.
    // Here we handle the bail manually:

    // Check the connection:
    if( ! $wpdb->check_connection( $allow_bail = false ) )
    {
        // Let's try to connect again, but there has already been
        // reconnect retries within the check_connection() method above.
        // Here we handle the bail manually:
        if( ! $wpdb->db_connect( $allow_bail = false ) )
        {
            // Exit with a style:
            if ( did_action( 'template_redirect' ) )
            {
                die( __( 'No DB connection' ) );
            }    
            else
            {
                wp_load_translations_early();
                $wpdb->bail( sprintf( '<pre>%s<pre>', __( 'No DB connection' ) ) );
            }
            // Just in case:
            dead_db();
        }      
    }
}

// Fetch another set of data:
$results = $wpdb->get_results( "SELECT * FROM {$wpdb->users}" );    

Notice that in most cases, we don't need to create custom SQL queries with $wpdb.

We can get very far by simply using the WP_Query, WP_Comment_Query or WP_User_Query classes. They can help us generate complex SQL queries that are executed through the included $wpdb->get_results() or $wpdb->get_col() calls.

For the WP_Query case, this happens in the humongous WP_Query::get_posts() method.

So there we already have $wpdb->flush() calls.

3
  • I think you have changed both functions. Commented May 14, 2015 at 11:42
  • hey dear If I call $wpdb->check_connection() and it says false so how do I reconnect it again? Commented May 14, 2015 at 11:44
  • @Thamaraiselvam thanks for you edit, I updated the answer.
    – birgire
    Commented May 14, 2015 at 12:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.