ওয়ার্ডপ্রেস হার্টবিট এপিআই কি 'বিট' স্তম্ভিত হয়ে গেছে বা সেগুলি একই সাথে সমস্ত ব্যবহারকারীর জন্য ঘটে?


14

ওয়ার্ডপ্রেস হার্টবিট API এজেএক্স কল চালানোর জন্য অ্যাডমিন-অজ্যাক্স.এফপি ব্যবহার করে। যদি ব্যবহারকারী এক্স তাদের ব্রাউজারটি খোলা ছেড়ে দেয় তবে সার্ভারে অনেকগুলি কল করা হবে, যখন একটি 'বিট' থাকবে তখন প্রতিটি কল ঘটবে। এখন যদি ব্যবহারকারী Y তাদের ব্রাউজারটি খোলা রাখে, সার্ভারে আরও অনেক কল করা হবে, যখন 'বিট' রয়েছে তখন এই প্রতিটি কল আসবে with এটি সম্ভবত একটি বড় ওয়েবসাইটের ব্যবহারকারী এ, ব্যবহারকারী বি এবং ব্যবহারকারী সিও একই কাজ করবে possible

আমার প্রশ্ন:

প্রচুর ব্যবহারকারী একই সাথে কোনও ওয়েবসাইট অ্যাক্সেস করতে পারে তা বিবেচনা করে কি ওয়ার্ডপ্রেস হার্টবিট এপিআই 'বিটস' স্তব্ধ হয়ে গেছে (ইউজার এক্স এর জন্য 'বিট' ইউজার ওয়াইয়ের জন্য 'বিট' করার কয়েক সেকেন্ড আগে ঘটে) বা 'বিট' ঠিক একই জায়গায় ঘটে? সব ব্যবহারকারীর জন্য সময়?

যদি 'বীট' স্তম্ভিত না হয় তবে আমার 'উদ্বেগ' দেখা দেওয়ার সময় সার্ভারে আমার উদ্বেগ খুব ভারী is


আমি এর উত্তর জানি না, যদিও এটি আকর্ষণীয়। আমি কল্পনা করি আপনি একাধিক ব্রাউজার / কম্পিউটারগুলি থেকে অ্যাডমিন অঞ্চলে লগইন করে এবং হার্টবিট অনুরোধগুলি এবং পিএইচপি স্ক্রিপ্টের মৃত্যুদন্ড কার্যকর করার দিকে ঘনিষ্ঠভাবে দেখার চেয়ে এই নিবন্ধে উল্লিখিত একটি প্রাথমিক পরীক্ষা করতে পারেন ।
নিকোলাই

@ialocin আমি এটি পরীক্ষা করার জন্য কিছুদিন আগে একটি টিক লগার সক্রিয় করেছি, তবে আমি এটি বন্ধ করতে ভুলে গিয়েছিলাম তাই আজ যখন আমি এটি পরীক্ষা করে দেখলাম তখন
টিক্সের

আমি কল্পনা করতে পারি যে তারা দ্রুত জমেছে। আপনার উত্তরটির উদাহরণটি আমার ধারণা থেকে একটি ভাল ধারণা দেয় .. @ বিবিরগায়ার
নিকোলাই

উত্তর:


7

আমি বিটের হয় মনে হবে staggered , প্রকৃতি দ্বারা কারনে পরবর্তী টিক ব্রাউজার সময় দ্বারা নির্ধারিত হয় time()মধ্যে scheduleNextTick()পদ্ধতি /wp-includes/js/heartbeat.jsফাইল:

 var delta = time() - settings.lastTick,
     interval = settings.mainInterval;

যেখানে এটি setTimeoutফাংশনটির সাথে পরবর্তী টিকটি নির্ধারণ করার জন্য ব্যবহৃত হয় :

if ( delta < interval ) {
    settings.beatTimer = window.setTimeout(
        function() {
            connect();
        },
        interval - delta
     );
} else {
    connect();
}

ব্রাউজার সময় হিসাবে সংজ্ঞায়িত করা হয়:

function time() {
   return (new Date()).getTime();
}

connect()পদ্ধতি Ajax কল এবং ব্যবহার রয়েছেalways()

.always( function() {
    settings.connecting = false;
    scheduleNextTick();
})

পরবর্তী টিক সময়সূচী।

উপলভ্য টিক অন্তরগুলি 5s, 15, 30 এবং 60s হয়।

সংক্ষিপ্ত টিকের ব্যবধানের সাথে প্রচুর সক্রিয় ব্যবহারকারীর জন্য প্রচুর সংখ্যক পিট একই সাথে ঘটতে পারে বলে মনে হচ্ছে।

কিছুটা ডেটা থাকলে সর্বদা ভাল, সুতরাং আপনি লগ-ইন করা ব্যবহারকারীদের থেকে টিকগুলি heartbeat_tickহুক দিয়ে লগ করতে পারেন :

add_action( 'heartbeat_tick', 
    function(  $response, $screen_id  )
    {
        $file =  WP_CONTENT_DIR . '/ticks.log'; // Edit this filepath to your needs.

        if( file_exists( $file ) && is_writeable( $file ) ) 
        {
            file_put_contents( 
                $file, 
                sprintf( "%s - Tick from user_id : %d - from screen_id : %s" . PHP_EOL,
                    date( 'c' ),
                    get_current_user_id(),
                    $screen_id
                ), 
                FILE_APPEND | LOCK_EX 
            );
        }
    }
, 11, 2 ); 

ticks.logফাইলটি থেকে এখানে একটি উদাহরণ দেওয়া হয়েছে :

2014-09-01T12:41:04+00:00 - Tick from user_id : 1 - from screen_id : edit-post
2014-09-01T12:41:19+00:00 - Tick from user_id : 1 - from screen_id : edit-post
2014-09-01T12:41:34+00:00 - Tick from user_id : 1 - from screen_id : edit-post
2014-09-01T12:41:56+00:00 - Tick from user_id : 1 - from screen_id : post
2014-09-01T12:42:11+00:00 - Tick from user_id : 1 - from screen_id : post
2014-09-01T12:42:20+00:00 - Tick from user_id : 3 - from screen_id : upload
2014-09-01T12:42:38+00:00 - Tick from user_id : 1 - from screen_id : post
2014-09-01T12:43:05+00:00 - Tick from user_id : 1 - from screen_id : post
2014-09-01T12:43:08+00:00 - Tick from user_id : 3 - from screen_id : attachment
2014-09-01T12:43:20+00:00 - Tick from user_id : 1 - from screen_id : post
2014-09-01T12:43:36+00:00 - Tick from user_id : 1 - from screen_id : post
2014-09-01T12:44:17+00:00 - Tick from user_id : 3 - from screen_id : profile

এই ধরনের একটি উত্তরের জন্য ধন্যবাদ। আমার বোঝা একটি চক্রের দুটি মার আছে। প্রাথমিক বিট যা ব্রাউজার এবং তারপরে একটি রিটার্ন বিট দ্বারা নির্ধারিত হয় । আপনার উত্তর থেকে এটি স্পষ্ট যে প্রাথমিক বীট স্তম্ভিত। রিটার্ন বিটটি (যা সার্ভার থেকে ব্রাউজারে ডেটা প্রেরণ করে) কী স্তব্ধ হয়ে যায়?
হেনরিউইট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.