Как выполнить php-скрипт с помощью drush?

Я новичок в Drush. Как я могу выполнить этот скрипт для удаления комментариев конкретного пользователя?

  $ uid = xx //идентификатор пользователя спама;
$ query = db_query ("SELECT cid FROM {comments} WHERE uid =% d", $ uid);
while ($ cid = db_result ($ query)) {
  comment_delete ($ чид);
}
 

Кроме того, было бы здорово, если бы вы могли сказать мне, как заполнить сценарий так, чтобы он взял имя пользователя вместо $ uid.

Спасибо

25 голосов | спросил alfish 23 PM00000040000004331 2011, 16:50:43

7 ответов


22

Вы можете преобразовать скрипт в сценарий Drush оболочки .

  

Скрипт drush shell - это любой файл сценария оболочки Unix, который имеет бит «execute» (т. е. через chmod + x myscript.drush )), который начинается с определенной строки:

  #! /usr /bin /env drush
 
     

или

  #! /full /path /to /drush
 

Скрипты Drush лучше, чем скрипты Bash по следующим причинам:

  • Они написаны на PHP
  • Drush может загружать сайт перед запуском скрипта

Ниже приведен пример, приведенный в helloword. сценарий .

  #! /usr /bin /env drush

//
//Этот пример демонстрирует, как писать drush
//сценарий «shebang». Эти сценарии начинаются с
//строка «#! /usr /bin /env drush» или «#! /full /path /to /drush».
//
//См. `Drush topic docs-scripts` для получения дополнительной информации.
//
drush_print («Привет, мир!»);
drush_print ();
drush_print («Аргументами этой команды были:»);

//
//Если вы вызываете с --everything, используйте drush_get_arguments
//для печати аргументов командной строки. Обратите внимание, что это
//вызов будет включать «php-script» (команда drush)
//и путь к этому скрипту.
//
if (drush_get_option ('все')) {
  drush_print ("". implode ("\ n", drush_get_arguments ()));
}
//
//Если - все не включено, используйте
//drush_shift для вывода аргументов в
//время. drush_shift возвращает только пользователя
//аргументы командной строки, и не включает
//команда drush или путь к этому скрипту.
//
else {
  while ($ arg = drush_shift ()) {
    drush_print (''. $ arg);
  }
}

drush_print ();
 

A

Вы можете сделать исполняемый файл сценария, так что вы можете выполнить его с помощью <script file> <parameters> , где <имя сценария> - это имя сценария, а <parameters> - это параметры, переданные скрипту; если скрипт не является исполняемым, вы вызываете его с помощью drush <имя скрипта> & Lt; параметры & GT; .

ответил kiamlaluno 23 PM00000050000001731 2011, 17:09:17
14

Я думаю, что вы смотрите на drush -d scru-uri = example.org sample_script.php для выполнения sample_script.php.

ответил Mike Gifford 1 MaramThu, 01 Mar 2012 00:14:27 +04002012-03-01T00:14:27+04:0012 2012, 00:14:27
10

С drush php-eval вы можете запустить свой скрипт < em> без сначала сохранить его в файл:

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

В этом случае используются вложенные кавычки, поэтому, чтобы предотвратить беспорядок, я рекомендую использовать только внутренние кавычки " в PHP-коде.

ответил tanius 5 Jam1000000amMon, 05 Jan 2015 05:25:36 +030015 2015, 05:25:36
7

Мы можем использовать drush php-script script_name для извлечения php-файла в Drush.

Для справки, связанной с Drush для выполнения php-файлов Тип Drush php-script --help отобразит команды

Примечание. Я установил php scirpt в корневую папку Drupal

ответил Bhanuji 22 Jam1000000amWed, 22 Jan 2014 11:36:40 +040014 2014, 11:36:40
5

Просто вы можете запустить php-скрипт с помощью drush scr ~ /sample.php .

ответил heshanlk 23 +04002012-10-23T17:05:17+04:00312012bEurope/MoscowTue, 23 Oct 2012 17:05:17 +0400 2012, 17:05:17
2

В командной строке, из любого места, запустите:

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

Если вы уже находитесь в /path /to /drupal-install, просто запустите:

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

Если вы еще больше продвинетесь по адресу /path/to/drupal-installation/sites/youdomain.com, чем просто выполните:

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

ваш файл script.php:

  & л;? PHP
//Не всегда необходимо, но иногда вам может потребоваться сначала войти в систему как администратор.
$ admin_uid = 1;
$ form_state = array ('uid' => $ admin_uid);
user_login_submit (array (), $ form_state);

//Теперь доступен доступный глобальный объект пользователя пользователя.
глобальный $ user;
print_r ($ пользователю);

//Делайте все, что вы хотите здесь.
 
ответил Francisco Luz 20 J0000006Europe/Moscow 2015, 21:36:11
0

Обратите внимание, что код db_result удален в Drupal 7. Вышеупомянутый код можно изменить на:

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

Если вы хотите использовать имя пользователя вместо uid, вы можете получить имя пользователя, используя это:

  $ username = user_load ($ uid) -> имя;
 
ответил rashidkhan 23 MaramMon, 23 Mar 2015 03:01:05 +03002015-03-23T03:01:05+03:0003 2015, 03:01:05

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132