ডেটাবেস অনুসন্ধানগুলি গণনা করুন এবং প্রদর্শন করুন


9

আমি একটি সমাধান খুঁজছি যে আমি কীভাবে একটি ওয়ার্ডপ্রেস সাইটে সমস্ত প্রশ্নগুলি গণনা করতে এবং প্রদর্শন করতে পারি। কেউ কি জানেন, যদি একটি ভাল প্লাগইন থাকে?

অন্যথায় এটি কনসোলে অনুসন্ধানগুলি পরীক্ষা করার সমাধান হবে কারণ আমি কনসোল নিয়ে অনেক বেশি কাজ করছি।

উত্তর:


10

আপনি আপনার বর্তমানে সক্রিয় ওয়ার্ডপ্রেস থিম functions.phpফাইলটিতে কোডের এই ব্লকটি পেস্ট করতে পারেন :

function wpse_footer_db_queries(){
    echo '<!-- '.get_num_queries().' queries in '.timer_stop(0).' seconds. -->'.PHP_EOL;
}
add_action('wp_footer', 'wpse_footer_db_queries');

উপরের কোডের ব্লকটি, আপনার থিমের ফুটারে এইচটিএমএল মন্তব্য রেন্ডার করবে (আগে </body>এবং এর মধ্যে </html>, ডাটাবেস ক্যোয়ারীর সংখ্যা এবং তারা কীভাবে লগ পুনরুদ্ধারে নিয়েছিল তা ধারণ করে।


এটি আমাকে সাহায্য করে। এর বিষয়বস্তু দিয়ে কোয়েরিগুলি প্রদর্শন করার জন্য কি কোনও সমাধান রয়েছে? লাইক তাই: SELECT * FROM wp_posts ধন্যবাদ
pkberlin


9

যুক্ত করুন ...

define( 'SAVEQUERIES', TRUE );

... আপনার কাছে wp-config.php, এবং পরিদর্শন $wpdb->queriesshutdown। এটি সর্বশেষতম হুক এবং একমাত্র এর পরে কোনও প্রশ্নই বরখাস্ত করা হয় না। এছাড়াও, এটিও কাজ করে wp-admin/

প্লাগইন হিসাবে নমুনা কোড:

<?php
/**
 * Plugin Name: T5 Inspect Queries
 * Description: Adds a list of all queries at the end of each file.
 *
 * Add the following to your wp-config.php:

define( 'WP_DEBUG',         TRUE );
define( 'SAVEQUERIES',      TRUE );

 */

add_action( 'shutdown', 't5_inspect_queries' );

/**
 * Print a list of all database queries.
 *
 * @wp-hook shutdown
 * @return  void
 */
function t5_inspect_queries()
{
    global $wpdb;

    $list = '';

    if ( ! empty( $wpdb->queries ) )
    {
        $queries = array ();
        foreach ( $wpdb->queries as $query )
        {
            $queries[] = sprintf(
                '<li><pre>%1$s</pre>Time: %2$s sec<pre>%3$s</pre></li>',
                nl2br( esc_html( $query[0] ) ),
                number_format( sprintf('%0.1f', $query[1] * 1000), 1, '.', ',' ),
                esc_html( implode( "\n", explode(', ', $query[2] ) ) )
            );
        }

        $list = '<ol>' . implode( '', $queries ) . '</ol>';
    }

    printf(
        '<style>pre{white-space:pre-wrap !important}</style>
        <div class="%1$s"><p><b>%2$s Queries</b></p>%3$s</div>',
        __FUNCTION__,
        $wpdb->num_queries,
        $list
    );
}

হালনাগাদ

এটি সম্পর্কে আরও কিছুক্ষণ চিন্তা করার পরে আমি আমার প্রয়োজনের জন্য আরও উপযুক্ত একটি প্লাগইন লিখেছি - এবং যদি আপনি কনসোলটি পছন্দ করেন তবে সম্ভবত আপনার।

<?php
/**
 * Plugin Name: T5 Log Queries
 * Description: Writes all queries to '/query-log.sql'.
 * Plugin URI:  http://wordpress.stackexchange.com/a/70853/73
 * Version:     2012.11.04
 * Author:      Thomas Scholz
 * Author URI:  http://toscho.de
 * Licence:     MIT
 */

add_filter( 'query', 't5_log_queries' );

/**
 * Write the SQL to a file.
 *
 * @wp-hook query
 * @param   string $query
 * @return  string Unchanged query
 */
function t5_log_queries( $query )
{
    static $first = TRUE;
    // Change the path here.
    $log_path = apply_filters(
        't5_log_queries_path',
        ABSPATH . 'query-log.sql'
    );
    $header = '';

    if ( $first )
    {
        $time    = date( 'Y-m-d H:i:s' );
        $request = $_SERVER['REQUEST_URI'];
        $header  = "\n\n# -- Request URI: $request, Time: $time ------------\n";
        $first   = FALSE;
    }

    file_put_contents( $log_path, "$header\n$query", FILE_APPEND | LOCK_EX );

    return $query;
}

ফাইলটি ট্র্যাক করুন tail( গিট ইনস্টল করা থাকলে উইন্ডোজ এ উপলব্ধ ):

$ tail -f query-log.sql -n 50
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.