নোডের সাথে সংযুক্ত ফাইলগুলি নোড থেকে সরানোর পরেও (এবং সেই সম্পাদনাটি সংরক্ষণ করা হয়), ড্রুপাল server


10

আমি আমার সাইটে অদ্ভুত কিছু লক্ষ্য করেছি: নোডের সাথে একটি ফাইল সংযুক্ত করার পরে (নিয়মিত ফাইল ক্ষেত্রের মাধ্যমে), সেই ফাইলটি কখনই সার্ভার থেকে মুছবে না । আমি এটিকে নোড থেকে সরিয়েছি, সেই পরিবর্তনটি সংরক্ষণ করি, তবে আমি দেখতে পাচ্ছি যে ফাইলটি এখনও সার্ভারে রয়েছে।

এটি ফাইলগুলিকে প্রতিস্থাপন করা খুব কঠিন করে তোলে, কারণ যখন ব্যবহারকারী কোনও প্রতিস্থাপন সংযুক্ত করার চেষ্টা করেন, তখন ফাইলটির নামের সাথে "_0" বা "_1" লাগানো থাকে (যেহেতু মূল ফাইলটি এখনও সার্ভারে রয়েছে এবং এটি নামটিকে নকল করে তোলে) । এর অর্থ হ'ল নতুন ফাইলের নাম / ইউআরএল মেলানোর জন্য আমাদের ফাইলের সমস্ত লিঙ্কগুলি খুঁজে বের করতে হবে এবং প্রতিটি সম্পাদনা করতে হবে। এটা মোট জগাখিচুড়ি।

আমি অনলাইনে দেখছি এবং কারও কাছেই এই সমস্যা আছে বলে মনে হচ্ছে না - নোড থেকে ফাইলগুলি সরানোর পরে সার্ভার থেকে মুছে ফেলা উচিত।

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


আমি যদি সঠিকভাবে বুঝতে পারি তবে এটি অবিলম্বে মুছে ফেলা হয় না তবে এটি মুছে ফেলার জন্য চিহ্নিত করা হয়। এটি চিহ্নিত হয়ে গেলে এটি ক্রোন রান করে পরিষ্কার করা হয়। টেবিলগুলি পরিষ্কার করার ক্ষেত্রেও একই ঘটনা।
জুনেদকাজি

ভাল চিন্তা. যদিও আমি এটি পরীক্ষা করেছিলাম এবং ফাইলগুলি কখনও মুছে ফেলা হয় না, একাধিক ক্রোন রান করার পরেও নয়।
বোরিয়ানা ডিচেভা

উত্তর:


17

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

আমি কেন বুঝতে পারছি কেন এটি ঘটছে, যেহেতু পুনর্বিবেচনার পুরো পয়েন্টটি পৃষ্ঠার কোনও পূর্ববর্তী সংস্করণে ফিরে যেতে সক্ষম হয়েছে।

কাজের ক্ষেত্রটি হ'ল আপনি 'রিভিশন' বা 'মডারেট' ট্যাব (যদি ওয়ার্কবেঞ্চ মডারেশন ব্যবহার করছেন) থেকে পুরানো সংশোধনটি আপনি মুছে ফেলতে চাইছেন এমন ফাইলটি মুছে ফেলতে পারেন। তারপরে এটি আবার আপলোড করুন এবং নামটি আবার ফিরে যাওয়া এবং সেই ফাইলটির দিকে নির্দেশ করে কোনও লিঙ্ক সম্পাদনা না করেই মিলবে match

আশা করি এটি উপলব্ধি করে এবং এটি অন্য কাউকেও সহায়তা করে!


4

আমার একই ব্যবহারের কেস ছিল (ফাইলের নামটি বজায় রাখার সময় ফাইলগুলি প্রতিস্থাপন করতে চাই) এবং একটি কাস্টম মডিউলে নিম্নলিখিত কোডটি এই লক্ষ্যটি পূরণ করেছিল। এই কোডটি সত্তা এপিআই মডিউলের উপর নির্ভর করে তাই এটি আপনার মডিউল .info ফাইলে নির্ভরতা হিসাবে যুক্ত করা উচিত। মতামত স্বাগত।

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

/**
 * Implements hook_node_update().
 *
 * Delete files from old node revisions.
 */
function MYMODULE_node_update($node) {
  // Array of content types to act on.
  if (in_array($node->type, array('page', 'article'))) {
    $wrapper = entity_metadata_wrapper('node', $node);
    $original_wrapper = entity_metadata_wrapper('node', $node->original);

    // Array of file fields to act on.
    foreach (array('field_public_files', 'field_private_files') as $field) {
      if (!isset($original_wrapper->{$field})) {
        continue;
      }
      $current_files = array();
      $original_files = array();
      // Get files that were attached to the original node (before update).
      foreach ($original_wrapper->{$field}->value() as $file) {
        $original_files[] = $file['fid'];
      }
      // Stop if there were no files previously attached.
      if (empty($original_files)) {
        continue;
      }
      // Get files currently attached to the node (after update).
      foreach ($wrapper->{$field}->value() as $file) {
        $current_files[] = $file['fid'];
      }
      // Delete files that were in the original node but were removed during
      // this update.
      $deleted_files = array_diff($original_files, $current_files);
      foreach ($deleted_files as $fid) {
        if ($file = file_load($fid)) {
          // Delete all usages of the file. Each node revision adds to the usage
          // count.
          file_usage_delete($file, 'file', 'node', $node->nid, 0);
          file_delete($file);
        }
      }
    }
  }
}

যেখানে আমাদের কোড দেওয়া উচিত।
ব্যান্ডঅফব্রাদার্স

উত্তরটির অনুরোধটি উত্তর খুঁজছিল না, তবে এটি কেবলমাত্র স্পটটিতে পেয়েছি। এখানে ভাগ করে নেওয়ার জন্য ধন্যবাদ!
টেক্সাস-ব্রোনিয়াস

2

আমি একটি মডিউল তৈরি করেছি যা এই থ্রেডে বর্ণিত অনাথ ফাইলগুলি মুছবে:

https://www.drupal.org/project/fancy_file_delete

এটি ম্যানুয়ালি ফাইলগুলি মোছার সাথে সাথে আন-ম্যানেজ করা ফাইলগুলিকেও বাধ্য করতে পারে।


0

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

লগগুলিতে কিছু আছে?


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

কমপক্ষে আপনি এটি ইনস্টলেশন পর্যন্ত সংকীর্ণ করেছেন। আপনি কোন মডিউল ব্যবহার করছেন? কোনও কাস্টম / কাঁটা / দেব মডিউল?
আরম বায়াজায়ান

0

পুরানো সংশোধনগুলি মুছতে বা তাদের সংযুক্ত ফাইলগুলি ছাড়া নোডগুলি সংরক্ষণ করে এবং ফিরে আসার ভাগ্য আমার ছিল না। এগুলি কেবলমাত্র সর্বদা কাজ করে:

  1. নোড মোছা হচ্ছে
  2. নোড সম্পাদনা করার মাধ্যমে এবং সার্ভার থেকে ম্যানুয়ালি ফাইলটি মোছার মাধ্যমে ফাইলটি সরিয়ে ফেলা হচ্ছে।

আমি একেবারে দ্বিতীয় বিকল্পটিকে ঘৃণা করি যার কারণেই আমি এখানে অন্য একটি সমাধান খুঁজছি।

(আমি সীমার বাইরে চলে যেতে পারি, যেহেতু আমার কাছে প্রচুর ক্লায়েন্ট ডি running চালাচ্ছে))


আমি দীর্ঘদিন আগে এ সম্পর্কে একটি টিকিট শুরু করেছি: drupal.org/node/1816584 । আপনি চাইলে চিম ইন করুন এবং অতিরিক্ত কণ্ঠস্বর থাকলে সম্ভবত এটি সম্পর্কে আরও গুরুতর আলোচনা হতে পারে।
বোরিয়ানা ডিচেভা

0

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

জিনিসগুলি সুচারুভাবে চালিত করতে ফাইল আপলোডের পথে নোডের ভিডটিকে ফোল্ডার হিসাবে যুক্ত করুন। সাধারণত আমি এরকম কিছু করছি।

ফোল্ডার পাথ = সম্পদ / [নোড: নিড] - [নোড: শিরোনাম] / [নোড: ভিডি]

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

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