ড্রিপ স্ক্রিপ্টিং? বা ব্যাচ এপিআই?


8

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

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

গতি অগত্যা কোনও অগ্রাধিকার নয় (যদিও এটি দুর্দান্ত) তবে আমরা সময়সীমা এড়াতে চাই, যা মাঝে মাঝে সঠিকভাবে বিলিং এবং দৈনিক অর্ডারগুলির সময় নির্ধারণের সমস্যা সৃষ্টি করতে পারে।

ড্রশ স্ক্রিপ্ট কি আরও ভাল বিকল্প, বা ব্যাচ এপিআই? উভয় আরও ভাল ব্যবহার করতে টিউটোরিয়াল আছে?

উত্তর:


13

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

এই ক্ষেত্রে, ড্রাশ সম্ভবত একটি ভাল পছন্দ; আপনি একটি কাস্টম মডিউল তৈরি করতে পারেন যা নির্দিষ্ট ড্রাশ কমান্ড প্রয়োগ করে, বা ড্রশ তার কমান্ডগুলির জন্য ব্যবহার করে এমন ডিরেক্টরিতে কেবল একটি কমান্ড ফাইল যুক্ত করতে পারে।


2
ড্রাশ অতিরিক্ত আপনি একই সময়ে একাধিক আইটেম চালানো পেতে একটি সারিও ব্যবহার করতে পারেন।
ড্যানিয়েল ওয়েহনার

2

এছাড়াও আপনি কাস্টম পিএইচপি সি এল এল স্ক্রিপ্ট ব্যবহার করতে পারেন। ড্রুপাল 7 এর জন্য এখানে একটি সাধারণ উদাহরণ:

#!/usr/bin/php
<?php
echo "Ubercart tasks\n===================\n";

$_SERVER['HTTP_HOST']       = 'default';
$_SERVER['PHP_SELF']        = '/index.php';
$_SERVER['REMOTE_ADDR']     = '127.0.0.1';
$_SERVER['SERVER_SOFTWARE'] = NULL;
$_SERVER['REQUEST_METHOD']  = 'GET';
$_SERVER['QUERY_STRING']    = '';
$_SERVER['PHP_SELF']        = $_SERVER['REQUEST_URI'] = '/';
$_SERVER['HTTP_USER_AGENT'] = 'console';

define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
//-------------------------------------------

// Place your code here

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

1
আমি যে সমস্ত সার্ভারে কিছু করতে চাই সেখানে ড্রাশ ইনস্টল করতে পছন্দ করি না।
ya.teck

2
একটি কারণ কেন আছে কি? এটি অন্য কোনও মডিউল ইনস্টল করার মতো নিবিড়।

আমি এটি বহুবার করেছিলাম এবং আমি মনে করি এই পদ্ধতিটি আরও সহজ।
ya.teck

1

আমার একটি ডি 6 উবারকার্ট সাইট রয়েছে যার জন্য 'অটো-জেনারেটেড ডিজিটাল পণ্যগুলি' এর জন্য উল্লেখযোগ্য ব্যাক-এন্ড প্রসেসিং প্রয়োজন। আমি এটির মাধ্যমে পরিচালনা করি:

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

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

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