কীভাবে ড্রাশ ব্যবহার করে পিএইচপি স্ক্রিপ্ট চালানো যায়?


28

আমি ড্রশ নতুন। একটি নির্দিষ্ট ব্যবহারকারীর মন্তব্য মুছে ফেলতে আমি কীভাবে এই স্ক্রিপ্টটি কার্যকর করতে পারি?

$uid = xx // the spam users id;
$query = db_query("SELECT cid FROM {comments} WHERE uid = %d", $uid);
while($cid = db_result($query)) {
  comment_delete($cid);
}

এছাড়াও, এটি দুর্দান্ত হবে যদি আপনি আমাকে স্ক্রিপ্টটি কীভাবে সম্পন্ন করবেন তা বলতে পারেন যাতে এটি ইউডি-র পরিবর্তে ব্যবহারকারীর নাম নেয়।

ধন্যবাদ

উত্তর:


24

আপনি স্ক্র্যাপটি কোনও ড্রশ শেল স্ক্রিপ্টে রূপান্তর করতে পারেন ।

একটি ড্রশ শেল স্ক্রিপ্ট হ'ল এমন কোনও ইউনিক্স শেল স্ক্রিপ্ট ফাইল যা এর "এক্সিকিউটিভ" বিট সেট (যেমন, এর মাধ্যমে chmod +x myscript.drush) থাকে এবং এটি একটি নির্দিষ্ট লাইন দিয়ে শুরু হয়:

    #!/usr/bin/env drush

অথবা

    #!/full/path/to/drush

নিম্নলিখিত কারণে ড্রশ স্ক্রিপ্টগুলি বাশ স্ক্রিপ্টগুলির চেয়ে ভাল:

  • সেগুলি পিএইচপি-তে লেখা আছে
  • স্ক্র্যাপটি চালানোর আগে ড্রশ সাইট বুটস্ট্র্যাপ করতে পারে

নীচে হেলওর্ডর্ড.স্ক্রিপ্টে আপনি খুঁজে পেতে পারেন এমন উদাহরণ ।

#!/usr/bin/env drush

//
// This example demonstrates how to write a drush
// "shebang" script.  These scripts start with the
// line "#!/usr/bin/env drush" or "#!/full/path/to/drush".
//
// See `drush topic docs-scripts` for more information.
//
drush_print("Hello world!");
drush_print();
drush_print("The arguments to this command were:");

//
// If called with --everything, use drush_get_arguments
// to print the commandline arguments.  Note that this
// call will include 'php-script' (the drush command)
// and the path to this script.
//
if (drush_get_option('everything')) {
  drush_print("  " . implode("\n  ", drush_get_arguments()));
}
//
// If --everything is not included, then use
// drush_shift to pull off the arguments one at
// a time.  drush_shift only returns the user
// commandline arguments, and does not include
// the drush command or the path to this script.
//
else {
  while ($arg = drush_shift()) {
    drush_print('  ' . $arg);
  }
}

drush_print();

 

আপনি স্ক্রিপ্টটিকে সম্পাদনযোগ্য করে তুলতে পারেন, যাতে আপনি স্ক্রিপ্টের নাম <script file> <parameters>কোথায় তা দিয়ে এটি সম্পাদন করতে পারেন <script name>এবং স্ক্রিপ্টে <parameters>প্যারামিটারগুলি দেওয়া হয়; যদি স্ক্রিপ্টটি কার্যকর না হয়, আপনি এটি দিয়ে কল করুন drush <script name> <parameters>


পিএইচপি ট্যাগগুলি কি প্রয়োজন হয় না?
অ্যালেক্সভ্যালিজো

যতদূর আমি স্মরণ করি, আপনি ড্রশ স্ক্রিপ্টগুলিতে পিএইচপি ট্যাগ ব্যবহার করবেন না।
কিমলালুনো

17

সঙ্গে drush php-eval, আপনি আপনার স্ক্রিপ্টটি রান করতে পারেন ছাড়া একটি ফাইল প্রথমে চিহ্নিত করে সংরক্ষণ করুন থাকার:

drush php-eval '
  $uid = 1234; 
  $query = db_query("SELECT cid FROM {comments} WHERE uid = %d", $uid);
  while($cid = db_result($query)) {
    comment_delete($cid);
  }
'

এটি নেস্টেড কোটেশন চিহ্নগুলি ব্যবহার করে, তাই কোনও গণ্ডগোল রোধ করতে আমি "পিএইচপি কোডের মধ্যে কেবলমাত্র ডাবল উদ্ধৃতি ব্যবহার করার পরামর্শ দিই ।


13

আমি মনে করি আপনি drush -d scr --uri=example.org sample_script.phpস্যাম্পেল_স্ক্রিপ্ট.পিপি কার্যকর করতে যাচ্ছেন।


8

আমরা drush php-script script_nameড্রশ-এ পিএইচপি ফাইলকে উত্তেজিত করতে ব্যবহার করতে পারি।

পিএইচপি ফাইলগুলি কার্যকর করার জন্য দ্রাশ সম্পর্কিত সহায়তার জন্য টাইপ Drush php-script --helpআপনাকে আদেশগুলি তালিকাভুক্ত করবে

দ্রষ্টব্য: আমি দ্রুপালের রুট ফোল্ডারে পিএইচপি স্কিপ্ট রেখেছি


5

এটি সহজ আপনি দ্বারা পিএইচপি স্ক্রিপ্ট চালাতে পারেন drush scr ~/sample.php


2

আপনার কমান্ড লাইনে, যে কোনও জায়গা থেকে, চালান:

$ drush --root=/path/to/drupal-installation --uri=youdomain.com scr /path/to/your/script.php

আপনি যদি ইতিমধ্যে / পাথ / টু / ড্রপল-ইনস্টলেশনটি চালাচ্ছেন তবে:

$ drush --uri=youdomain.com scr /path/to/your/script.php

সেক্ষেত্রে আপনি কেবল চালানোর চেয়ে /path/to/drupal-installation/sites/youdomain.com এ আরও এগিয়ে আছেন:

$ drush scr /path/to/your/script.php

আপনার স্ক্রিপ্ট.এফপি ফাইল:

<?php
// Not always needed but sometimes you might have to first login as an administrator.
$admin_uid = 1;
$form_state = array('uid' => $admin_uid);
user_login_submit(array(), $form_state);

// Now the logged in user global $user object become available.
global $user;
print_r($user);

// Do whatever you want here.

0

দয়া করে মনে রাখবেন যে db_resultদ্রুপাল in এ সরানো হয়েছে The উপরের কোডটি এতে পরিবর্তন করা যেতে পারে:

$result = db_query($query);
foreach($result as $cid) {
  comment_delete($cid);
}

আপনি যদি ইউডের পরিবর্তে ব্যবহারকারীর নামটি ব্যবহার করতে চান তবে আপনি এটি ব্যবহার করে ব্যবহারকারীর নামটি পেতে পারেন:

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