স্থানান্তর আবর্জনা সংগ্রহ করা হয়?


61

এই প্রশ্নটি আমাকে ভেবে পেয়েছে যে wp_options- এ ক্ষণস্থায়ী আরএসএস ফিডগুলি স্বয়ংক্রিয়ভাবে সরানো হয়নি?

স্থানান্তরের মেয়াদ শেষ হয়ে যাবে এবং মোছা হবে বলে মনে করা হচ্ছে। তবে কেবলমাত্র এই উপায়টি আমি দেখি হ'ল যখন ক্ষণস্থায়ী মেয়াদ শেষ হয়ে যায় এবং অনুরোধ করা হয়, তবে এটি অনুরোধের সময় মোছা হয়।

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

সুতরাং এটি কি চিরকালের জন্য ডাটাবেসে আটকে থাকবে?


তাত্ত্বিকভাবে ক্রোন চালানোর সময় এগুলি অপসারণ করা উচিত (যদি তাদের মেয়াদ শেষ হয়ে যায়)
অনট্রিকপনি

1
@ প্রশংসিত অ্যামিবা হ্যাঁ, আমি এই প্রশ্নে উল্লেখ করেছি। আমার বক্তব্যটি হচ্ছে - ক্ষণস্থায়ীভাবে তৈরি হচ্ছে এমন ধারণা বা গ্যারান্টি দেয় না যে এটির জন্য অনুরোধ করা হবে requested আসল প্রশ্নটির উপর জোর দেওয়া - কখন এবং যদি মেয়াদ উত্তীর্ণ ট্রান্সিয়েন্ট আমি কখনই না পাই তা মুছে ফেলা হয় ?
রাস্ট

1
এটি ধরে নিয়েছে যে আপনি মেয়াদোত্তীর্ণ ডেটা সাফ করেছেন, তবে হ্যাঁ, আপনি ঠিক বলেছেন, এমন পরিস্থিতি রয়েছে যেখানে এটি কখনও মুছে ফেলা হবে না। ট্রান্সজেন্ট ব্যবহার করে এমন একটি উইজেট অপসারণ করার মতো। আপনার
এটির

1
@ রার্স্ট - কোনও প্যাচ লিখতে এবং ট্র্যাকের কাছে জমা দেওয়ার জন্য একটি নিখুঁত জিনিস বলে মনে হচ্ছে?
মাইকচিন্কেল

উত্তর:


45

তারা এখন

ওয়ার্ডপ্রেস দিয়ে শুরু করে ৩.7 মেয়াদোত্তীর্ণ স্থানান্তরগুলি ডাটাবেস আপগ্রেডগুলিতে মুছে ফেলা হয়, দেখুন # 20316


পুরানো উত্তর

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

ডেটাবেস স্টোরেজের জন্য ব্যবহার করা হয় তবে আবর্জনা সংগ্রহের জন্য কিছু অস্থায়ী কোড:

add_action( 'wp_scheduled_delete', 'delete_expired_db_transients' );

function delete_expired_db_transients() {

    global $wpdb, $_wp_using_ext_object_cache;

    if( $_wp_using_ext_object_cache )
        return;

    $time = isset ( $_SERVER['REQUEST_TIME'] ) ? (int)$_SERVER['REQUEST_TIME'] : time() ;
    $expired = $wpdb->get_col( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout%' AND option_value < {$time};" );

    foreach( $expired as $transient ) {

        $key = str_replace('_transient_timeout_', '', $transient);
        delete_transient($key);
    }
}

$ সময় = $ _SERVER ['REQUEST_TIME']; এবং তারপরে এসকিউএল কোয়েরিতে $ সময় ব্যবহার করা - এটি করবেন না। এসকিউএল ইনজেকশনগুলি রোধ করতে carefully _SERVER ভেরিয়েবল / মানগুলির সাথে আরও সতর্কতার সাথে ডিল করুন।
হ্যাকারে

@hakre এইচএম ... আমি পিএইচপি সম্পাদনা উপস্থাপনা থেকে এটিকে বেছে নিয়েছি time()যা ব্যবহারের ফলে এটির সুপারিশ করেছে যা বাগের কারণ হতে পারে (মৃত্যুদন্ড প্রকৃতির দ্বারা তাত্ক্ষণিকভাবে নয়)। অনুরোধের সময়টি পিএইচপি নিজেই সেট করে দিচ্ছে, কোনও ধরণের ব্যবহারকারী সরবরাহিত ডেটা থেকে আসে না। কেন এই দুর্বলতা?
রাস্ট

@ রার্স্ট: আমি বলিনি যে আপনি এটি ব্যবহার করবেন না, আপনার কেবল এটি নিশ্চিত করা উচিত যে এটি নিরাপদে এসকিউএল কোয়েরির অভ্যন্তরে এনকোড করা হয়েছে। আপনার বাহ্যিক উত্স থেকে আসা প্রতিটি ভেরিয়েবলের সাথে এটি করা উচিত। _S _SERVER ভেরিয়েবলগুলি প্রত্যাশার মতো সেট নাও করা যেতে পারে এবং পরিবর্তে অনুরোধকারী ব্যবহারকারী দ্বারা সেট করাও। আমি কেবল কিছু ভাল কোডিং অনুশীলন প্রচার করতে চেয়েছিলাম। সর্বদা হিসাবে, সহজলভ্যতার প্রকৃত অবস্থা সম্পর্কে জানতে, ডক্সটি দেখুন। পিএইচপি 4 যেমন উদাহরণস্বরূপ, এইরকম চলকটি বিদ্যমান নেই এবং এটি কাস্টম শিরোনাম বা পরিবেশের পরিবর্তনশীল - ওপরে
hakre

@ হ্যাক্রে ফিক্সড (আমার মনে হয়), পিএইচপি 4 অনুস্মারক বিটিডব্লিউর জন্য ধন্যবাদ (আমি ওয়ার্ডপ্রেস এর সমর্থন ছেড়ে দেওয়ার জন্য অপেক্ষা করতে পারি না)
রাস্ট

এটা আমার চোখে অনেক ভাল দেখাচ্ছে;)। আসুন আশা করা যাক সময় () এবং নেতিবাচক পূর্ণসংখ্যার সাথে কোনও সমস্যা নেই যা দুর্ঘটনার কারণে সমস্ত বা কোনও স্থানান্তরকে মুছতে পারে। কোনও চলমান সিস্টেমে কখনও বিশ্বাস করবেন না: পি
হ্যাক্রে

20

পুনরায় শব্দ এবং পুনরায় ফর্ম্যাটিং সহ আলোচনার কয়েকটি মন্তব্য একটি উত্তরে সরিয়ে নেওয়া হচ্ছে ..

মূলত, এটি যা নেমে আসে তা হ'ল যদি আপনার কাছে অতি চরম ঘটনা না ঘটে তবে তাদের সত্যিকার অর্থে "আবর্জনা সংগ্রহ করা" হওয়ার দরকার নেই। আপনি যদি তাদের কখনই না আনেন, তবে তারা সেখানে আছেন বা না থাকুন তা বিবেচ্য নয়।

দেখুন, স্থানান্তরগুলি ডিফল্টরূপে বিকল্প টেবিলে সংরক্ষণ করা হয়। একটি বেস ইনস্টলে, অপশন টেবিলটিতে এটিতে 100 টি এন্ট্রি থাকবে। প্রতিটি অস্থায়ী আরও দুটি এন্ট্রি যুক্ত করে, তবে আপনার হাজার হাজার থাকলেও তারা স্বয়ংক্রিয়ভাবে চালিত না হওয়ায় তারা সাইটের গতিকে প্রভাবিত করে না।

প্রারম্ভকালে, ওয়ার্ডপ্রেস অপশনগুলি মেমরিতে লোড করে, তবে এটি কেবলমাত্র অপশন লোড করে যা তাদের অটোল্যাড পতাকা চালু করেছে। স্থানান্তরকারীরা এটি পায় না এবং মেমরিতে লোড হয় না। কেবলমাত্র স্থানান্তরগুলি যা পরে পরে ব্যবহৃত হয় তাদের জন্য ব্যয় হবে।

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

ডাটাবেসগুলিতে সূচীকরণ হ'ল সেই গভীর-পঠিত ধরণের ধারণাগুলির মধ্যে একটি যা লোকেরা বুঝতে পারে না যে পর্দার আড়ালে কী ঘটছে তা বাস্তবে বোঝেনি। ডাটাবেসগুলি গ্রাউন্ড আপ থেকে দ্রুত ডেটা পুনরুদ্ধারের জন্য ডিজাইন করা হয়েছে এবং সমস্যা ছাড়াই এই ধরণের জিনিস পরিচালনা করতে পারে। এটি বেশ ভাল পড়া: http://en.wikedia.org/wiki/Index_(database )

এখন, সর্বাধিক সুস্পষ্ট উপায়ে ক্লিনআপ (তাদের উপর এসকিউএল ডিলিট কল করা) আসলে এটি ডাটাবেস থেকে মুছবে না। এটি কেবল তাদের সূচি থেকে সরিয়ে দেয় এবং সারিটিকে "মোছা" হিসাবে চিহ্নিত করে। আবার, এটি ঠিক কিভাবে ডাটাবেস কাজ করে। প্রকৃতপক্ষে ডিস্কের স্থানটি সাফ করতে আপনাকে প্রথমে চালিয়ে যেতে হবে এবং একটি অপ্টিমাইজ টেবিলটি পরে করতে হবে এবং এটি একটি দ্রুত অপারেশন নয়। এটি সময় নেয়. সম্ভবত এটি তার মূল্য চেয়ে বেশি সময়। মোট সিপিইউর সময়ে আপনাকে সঞ্চয় দেওয়ার পক্ষে এটি যথেষ্ট নয়।

আপনার যদি এমন কিছু সমস্যা থাকে যা ব্যবহার করা হচ্ছে না এমন নতুন স্থানান্তরগুলির নিয়মিত সন্নিবেশের কারণ হয়ে থাকে তবে তার পরিবর্তে আপনাকে অন্তর্নিহিত সমস্যাটি সন্ধান করতে হবে। এই স্থানান্তরগুলি কী ?োকানো হচ্ছে? তারা কি পরিবর্তিত বা পরিবর্তিত কী ব্যবহার করছে? যদি তা হয় তবে এর ফলে তৈরি হওয়া প্লাগইন বা কোডটি মূলত, এটি করা উচিত নয়। এটি আরও সহায়ক হবে, কারণ সম্ভবত যে কোডগুলি সেগুলি সঠিকভাবে তৈরি করছে না সেগুলি তাদের পুনরুদ্ধারও করছে না, এবং এটি এর চেয়ে বেশি কাজ করছে।

অন্যদিকে, এমন একটি ঘটনাও ঘটতে পারে যেখানে প্রতিটি পোস্টের মতো কোনও কিছুর জন্য স্থানান্তর তৈরি হচ্ছে। এটি সত্যই গ্রহণযোগ্য হতে পারে। ফেসবুক থেকে আগত মন্তব্যগুলি সঞ্চয় করার জন্য, আমি নিজেই এসএফসি-তে এটি করি। প্রতিটি পোস্টের সাথে সম্পর্কিত একটি সম্ভাব্য ক্ষণস্থায়ী থাকে, যার অর্থ প্রতি পোস্টে দুটি অতিরিক্ত সারি। আপনার যদি 10 কে পোস্ট থাকে তবে বিকল্প টেবিলে (শেষ পর্যন্ত) আপনার 20k সারি থাকবে। এটি খারাপ বা ধীর নয়, কারণ আবার, 100 সারি এবং 20,000 সারিগুলির মধ্যে খুব কম পার্থক্য যেখানে ডাটাবেসগুলি সত্যই যত্নশীল। সবই সূচিবদ্ধ। এটি হেক হিসাবে দ্রুত। উপ-উপ-মিলিসেকেন্ড।

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


1
এনবি: কোনও মেয়াদোত্তীর্ণ স্থানান্তরকারীরা স্বয়ংক্রিয়ভাবে লোড হয় না এবং কোনও মেয়াদোত্তীর্ণতা ডিফল্ট হয় না , সুতরাং যেখানে কোনও অ্যাপ্লিকেশন / প্লাগইন প্রচুর পরিমাণে স্থানান্তর তৈরি করে এবং কোনও মেয়াদোত্তীকরণ সেট না করে তারা প্রতিটি পৃষ্ঠা / পোস্ট লোডে মেমরির অংশ ব্যবহার করবে।
ওয়েবওয়ার

"অবসান ছাড়াই ক্ষণস্থায়ী" ব্যবহার করার কোনও কারণ নেই, কারণ এটি মূলত একটি সাধারণ "বিকল্প" এর সমান।
অটো

1
অবশ্যই, তবে এটি ডিফল্ট । সেই হিসাবে, অনেক প্লাগইন লেখক অ-মেয়াদোত্তীর্ণ ট্রান্সজেন্ট যুক্ত করছেন।
ওয়েবওয়্যার

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

2
বলুন, 7 দিন। যদি কোনও প্লাগইন / থিম লেখক বড় বা ছোট কিছু চায় তবে তারা এটিকে নির্দিষ্ট করে দেবে। যদি তারা অটোলোড চান, তাদের মেয়াদোত্তীর্ণকরণের জন্য 0 টি নির্দিষ্ট করতে হবে না (= অনন্ত), তবে এটি বর্তমানে মেয়াদোত্তীকরণ পরামিতিটি হ্যাঁ / না অটোলোড প্যারামিটার হিসাবে ডাবল ডিউটি ​​করার সাথে পেয়েছে। যে কোনও উপায়ে, ডিফল্ট মেয়াদোত্তীর্ণতা অটোল্যাডেও পৌঁছানো উচিত নয় = হ্যাঁ ডিফল্ট হিসাবে; এটা শুধু ঝামেলা চাইছে।
ওয়েবওয়ার

18

অটো - আমি আপনার সাথে আরও একমত হতে পারি না। বিষয়টি হ'ল শেষ পর্যন্ত এই সমস্ত স্থানান্তরগুলির সাথে টেবিলের আকারটি হাস্যকর হয়ে যায়। এটি কয়েক মিলিয়ন সারি ভাঙতে লাগে না। আমি বর্তমানে একটি বিকল্প টেবিল নিয়ে কাজ করছি যার মধ্যে 130k সারি রয়েছে এবং নিয়মিত ঝুলছে। কারণ মান ক্ষেত্রটি একটি বৃহত পাঠ্য প্রকার, এমনকি কেবল "অটোল্যাড" সারিগুলি অনুসন্ধান করা কার্য সম্পাদনের দুঃস্বপ্ন হয়ে ওঠে। এই মান ক্ষেত্রগুলি বাকী সারির ডেটা থেকে পৃথকভাবে সংরক্ষণ করা হয়। যদিও এটি যৌক্তিকভাবে একই টেবিলের অংশ, আপনার সারিগুলি সরিয়ে নিতে অবশ্যই অবশ্যই যোগ দিতে হবে। যোগদান করে যা এখন চিরতরে নেয় কারণ আপনার প্রয়োজনীয় ডেটাটি ডিস্কের সমস্ত জায়গাতে ছড়িয়ে পড়ে। প্রোফাইলিং (মাইকিউএল এর জন্য জেট প্রোফাইলার ব্যবহার করে) এটি প্রমাণিত হয়েছে।

ক্লাস্টার্ড কীতে অটো-লোড যুক্ত করা এই সমস্যাটি সমাধান করতে সহায়তা করতে পারে। উদাহরণস্বরূপ, আইডি এএসসি-র অটোল্যাড ডেস্কে ক্লাস্টারিংয়ের ফলে সমস্ত অটোল্যাড সারি প্রথমে ডিস্কে একত্রিত হওয়ার অনুমতি দেয়। এমনকি এখনও আমি মনে করি আপনি একটি ডিবি দৃষ্টিকোণ থেকে একটি বিশাল স্ট্রেনের দিকে তাকিয়ে আছেন।

ব্যক্তিগতভাবে আমি মনে করি এই সিস্টেমটির নকশাটি নকল। বিকল্পগুলির সারণীটি অনেকগুলি জিনিসের জন্য একটি সাধারণ ক্যাচ-অলতে পরিণত হয়েছে বলে মনে হয়। এটি ঠিক আছে যদি মান ক্ষেত্রটি যথাযথভাবে বাকী রোডাটাতে একই পৃষ্ঠায় অন্তর্ভুক্ত করা যায় এবং কার্যকরভাবে সূচকযুক্ত করা যায়। দুর্ভাগ্যক্রমে যে ঘটনা না। যারাই এটি নকশা করেছে তাকে DB101 ক্লাসে ফিরে যেতে হবে।


5
সত্য, তবে বিবেচনা করুন যে যখন ওয়ার্ডপ্রেস বিকাশ শুরু হয়েছিল, তখন কেউই ভাবেন নি যে এটি হাজার হাজার প্লাগইন তাদের ডাটা স্টোরেজ হিসাবে বিকল্প টেবিল ব্যবহার করে পৌঁছাবে :)
onetrickpony

@ ইউনেট্রিকপনি সে কারণেই আপনার সময়টি গ্রহণ করা এবং সঠিকভাবে করা গুরুত্বপূর্ণ, আপনি যদি কোনও দিন এটি বিশাল হওয়ার প্রত্যাশা করেন না তবে :)
মাহমুদ আল-কুদসী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.