আমি কি ডাব্লুপিআরসিআরনকে অক্ষম করব এবং এর পরিবর্তে প্রতি কয়েক মিনিট পরেই সার্ভার থেকে wp-cron.php ট্রিগার করব?


12

দেখে মনে হচ্ছে ওয়ার্ডপ্রেস অকারণে প্রতিটি পৃষ্ঠার লোডে ডাব্লুপি সিআরনকে আগুন দেয়। আমি ভাবছি, এটি প্রতিটি দর্শন চালানোর পরিবর্তে, কেন এটি সার্ভারের মাধ্যমে প্রতি 5 মিনিটে চালানোর জন্য সময় নির্ধারণ করে না? আমি কেবল প্রতি পাঁচ মিনিটে wp-cron.php ট্রিগার করতে এবং পছন্দসই ফলাফল অর্জন করতে পারি?

এটার কোনও নেতিবাচকতা আছে কি?

উত্তর:


15

সার্ভারের ক্রোন জবগুলি ব্যবহার করে ডাব্লুপি সিআরন চালানোর কোনও খারাপ দিক নেই। আসলে এটিই প্রস্তাবিত অনুশীলন।

মতে অফিসিয়াল ওয়ার্ডপ্রেস প্লাগইন ডেভেলপমেন্ট ডকুমেন্ট :

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

এটি করতে, আপনাকে প্রথমে এখানে ডিফল্ট ক্রোন আচরণটি অক্ষম করতে হবে wp-config.php:

define('DISABLE_WP_CRON', true);

তারপরে, wp-cron.phpআপনার সার্ভার থেকে সময়সূচী । লিনাক্সের জন্য, এর অর্থ:

crontab -e

তবে কমান্ড লাইন (সিএলআই) এ চালানোর পরিবর্তে এটি একটি HTTP অনুরোধ হিসাবে চালান। তার জন্য আপনি ব্যবহার করতে পারেন wget:

*/5 * * * * wget -q -O - https://your-domain.com/wp-cron.php?doing_wp_cron

ওয়ার্ডপ্রেস wp-cron.phpনিম্নলিখিত সিডির সাথে প্রয়োজনীয় সমস্ত ফাইল, প্লাগইন ইত্যাদি লোড করে :

if ( !defined('ABSPATH') ) {
    /** Set up WordPress environment */
    require_once( dirname( __FILE__ ) . '/wp-load.php' );
}

সুতরাং ওয়ার্ডপ্রেস গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি লোড না করার বিষয়ে চিন্তা করবেন না।


1
আপনি WordPress.org ডকুমেন্টেশনগুলির সাথে লিঙ্ক করেছেন যার সাথে যোগ না wget http://YOUR_SITE_URL/wp-cron.phpকরেই কি অন্যটির ?doing_wp_cron চেয়ে ভাল? ?doing_wp_cronঅ-সংস্করণটি না করে এর সংযোজন কী করে ?
গারকনিস

সম্ভবত ঠিক তাই আপনার লগগুলি ক্যোয়ারী স্ট্রিংটি প্রদর্শন করবে যাতে আপনি কীভাবে নিশ্চিততার সাথে ডেকেছিলেন তা জানেন।
স্লববক্স

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

1
@ জনডি: এই পদ্ধতিটি ক্রোনকে অক্ষম করে না, এটি ডাব্লুপি ক্রোন পদ্ধতিটি অক্ষম করে যা প্রতিটি পৃষ্ঠার লোডে ক্রোন জবগুলি পরীক্ষা করে চালানোর চেষ্টা করে। define('DISABLE_WP_CRON', true);ক্রোন প্রক্রিয়ার কেবলমাত্র সেই অংশটি অক্ষম করে এবং তারপরে কোড সহ ক্রোন স্ক্রিপ্টকে কল করে: */5 * * * * wget -q -O - https://your-domain.com/wp-cron.php?doing_wp_cronসার্ভারে ক্রোন জবগুলি কার্যকর করা নিশ্চিত করে। কোনও শিডিয়ুলিং প্লাগইন পার্থক্যটিও জানতে পারবে না।
ফায়াজ

1
এই বিষয় সম্পর্কে WordPress.org ডকুমেন্টেশনের লিঙ্কটি ডেভেলপার.ওয়ার্ডপ্রেস.আর.
প্লাগইনস

2

কিছুটা ডাউনসাইড রয়েছে: প্রথমত, যখন wp-cron.php ব্যবহার করে ক্লিপ জিনিস যেমন $ _SERVER ভেরিয়েবল সেট করা থাকে না। পরিবর্তে ডাব্লুপি-ক্রোন.এফপি করার জন্য কার্ল অনুরোধটি ব্যবহার করে লোকেরা এই সীমাবদ্ধতাটি অতিক্রম করে।

দ্বিতীয়ত, যেহেতু ডাব্লুপি নিজেই ডাব্লুপি-ক্রোন.এফপি দিয়ে লোড হয় না; আপনি যদি একটি এসএমটিপি মেলার প্লাগইন ব্যবহার করেন তবে ডাব্লুপি-ক্রোন কল করার সময় এটি লোড হবে না। আবার কার্ল কল ব্যবহার করা এই সমস্যাটিকে ওভাররাইড করে। কার্ল মনে হয় সবচেয়ে ঘন ঘন ব্যবহৃত পদ্ধতি।

যাহোক; আমি পোস্টফিক্সে মেল সেটিংস সেট করার পরে এবং (এনজিএনএক্সের জন্য) পিএইচপি-এফএমপি কনফিগারেশন সঠিকভাবে এবং ক্রন্টব যেমন সেট করার পরে ডাব্লুপি-ক্লিপ ব্যবহার করতে পছন্দ করি

*/5    *   *   *   *  wp cron event list --skip-plugins --skip-themes --path="/var/www/vhosts/example.com/httpdocs/wp" --fields=hook,next_run_relative --format=csv | awk -F, '$2=="now" {print $1}' | xargs -r wp --path="/var/www/vhosts/example.com/httpdocs/wp" cron event run $1

(সিএসভি ফর্ম্যাটে নির্দিষ্ট ক্ষেত্রের সাথে সমস্ত ক্রোন তালিকাভুক্ত করুন - ক্রুকের নাম হুক, পরবর্তী রানের আপেক্ষিক সময় হ'ল AWK ব্যবহার করে 'এখন' পরবর্তী রান হিসাবে প্রদর্শিত হবে) এখন সেই তালিকাটি xargs এ পাস করুন wp cron event run $HOOKপ্রতিটি ক্রোনকে কল করুন।) ডাব্লুপি-ক্লিপ লোড ওয়ার্ডপ্রেস সঠিকভাবে ব্যবহার করা (ক্রোনগুলি তালিকাভুক্ত করার সময় আমি প্লাগইনগুলি এড়ানো পছন্দ করি, কারণ কোড এরোস এবং পিএইচপি সতর্কতাগুলি স্ক্রিপ্টযুক্ত আউটপুটটি স্ক্রু করে দেবে; তবে ক্রগার ক্র্যাশ চালানোর সময় সেগুলি এড়িয়ে চলবে না, ক্রোনটি প্লাগইনগুলি লোড হওয়ার প্রয়োজন হতে পারে)

আশা করি এটি আপনাকে কী কী সন্ধান করবে সে সম্পর্কে কিছু পয়েন্টার দেয়।


2
কিভাবে স্থাপন করা সম্পর্কে: / 15 * * * wget হয় -q -O - yourdomain.com/wp-cron.php?doing_wp_cron যেমন TomMcFarlin দ্বারা প্রস্তাবিত - tommcfarlin.com/wordpress-cron-jobs । কাজটি ভালোভাবেই করতে পারে বলে মনে হচ্ছে। আপনার মন্তব্য প্রশংসা করবে।
TheBigK

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

0

ডাব্লুপি-ক্রোন অক্ষম না করার অনেকগুলি কারণ রয়েছে। আসলে, এটি করার জন্য কোনও ব্যবহারের সন্ধান পাওয়া প্রায় অসম্ভব। এটি আপনার সাইটকে কমিয়ে দেয় না এবং এটি এমন জিনিসগুলির জন্য ব্যবহৃত হয় যা আপনি জানেন না।

অনেকগুলি প্লাগইন জিনিস নির্ধারণের জন্য ডাব্লুপি-ক্রোন ব্যবহার করে। আপনি সময়সূচীটি বন্ধ করলে তারা বিভ্রান্ত হতে পারে।

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

এছাড়াও, ডাব্লুপি হার্টবিট অ্যাডমিন অঞ্চলে প্রতি 15 সেকেন্ডে আগুন লাগে, যারা 99% লোকেরা মনে করেন যে তারা তাদের কাছে আছে এই সমস্যার সমাধান করে।


2
এটি একটি ভয়াবহ প্রতিক্রিয়া - তারা - ডাব্লুপি ক্রোনকে অক্ষম করছে ab তারা কেবল পেইজলোডে ডাব্লুপি ক্রোনকে অনুরোধ করে অক্ষম করছে এবং এর পরিবর্তে এটি সিস্টেম ক্রোন ডিমনে অফলোড করছে। Sheesh।
ব্যারি চ্যাপম্যান

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

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

ভাল, এখানে দুটি মন্তব্য আমার বক্তব্য প্রমাণ করে। আপনার একটি দেব বলেছেন যে "এটি ক্রোন অক্ষম করে না এটি ওএস ক্রোনকে এলোমেলোভাবে বদলে দেয়" - এটি ওয়ার্ডপ্রেসের বিরতি, যা ওএস নিরপেক্ষ is তারপরে আরেক দেব বলেছেন "আরে, ডাব্লুপি ক্রোন ধ্বংস করার পরিকল্পনা করা প্লাগইন দেবের দায়িত্ব" " আহ ঠিক. সুতরাং আপনি যদি ক্রোন কার্যকারিতা চান, আপনার ক্রোন সিস্টেমটি নির্মূলের জন্য পরিকল্পনা করা উচিত? কি? ব্যাকআপ ক্রোন সিস্টেম? এই মন্তব্যটি বোঝা যায় না [স্পষ্টতই]।
জন ডি

যাইহোক, বর্তমান অবস্থা "মোট বিবেচনা"। এটাই বর্তমান অবস্থা। ফ্রেমওয়ার্ক পিওভির একমাত্র সমাধান হ'ল লোকদের বলা: এখানে ডাব্লুপি-ক্রন সিস্টেম বিদ্যমান রয়েছে AS এটি বন্ধ করবেন না। অন্য বিকল্পটি 10,000 টি ভিন্ন, বিভিন্ন মতামত। যা আমাদের এখন আছে।
জন ডি

0

আমি এখনও বাইরের পরিষেবাতে ডাব্লুপি-ক্রোনকে অফলোড করার একটি সত্যিকারের নেপথ খুঁজে পাচ্ছি না। এখন অনেক বছর ধরে এটি করা হচ্ছে।

বিশেষত আজকের বিশ্বে যেখানে আপনি মাইক্রোসার্ভিসেস হিসাবে অ্যাপ্লিকেশন চালাতে পারেন।

আমি প্রতিটি ওয়ার্ডপ্রেস উপাদানগুলির জন্য পৃথক ডকার পাত্রে ব্যবহার করি - পিএইচপি, ওয়েব, ডিবি, ক্রোনটাব, রেডিস এবং আরও)। পৃথক ধারক হিসাবে ক্রন্টব্যাব থাকা, স্থানীয় নেটওয়ার্ক ব্যবহার করে HTTP- র মাধ্যমে ডাব্লুপি-ক্রোন কল করা, যখন আমার এটি প্রয়োজন তখনই চলমান।

এটি ব্যাকএন্ড নোডগুলিতে স্ট্রেস হ্রাস করে এবং ছোট আক্রমণের পৃষ্ঠের দ্বারা সুরক্ষা উন্নত করে।

যদি বিকাশকারী প্রতিটি পৃষ্ঠার লোডে ডাব্লুপি-ক্রোন কল না করে কীভাবে স্টাফ করবেন তা বুঝতে না পারছেন, হ্যাক, এটি কেবল তার পক্ষে অনভিজ্ঞতার পক্ষে কথা বলে। "এটিকে একা রেখে যাওয়া", কারণ কীভাবে জিনিস কাজ করে তা এটি রাখার পক্ষে ভাল কারণ আপনি বুঝতে পারেন না।

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