annotate vendor/drush/drush/commands/core/queue.drush.inc @ 9:1fc0ff908d1f

Add another data file
author Chris Cannam
date Mon, 05 Feb 2018 12:34:32 +0000
parents 4c8ae668cc8c
children af1871eacc83
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 use Drush\Log\LogLevel;
Chris@0 4
Chris@0 5 /**
Chris@0 6 * Implements hook_drush_help().
Chris@0 7 */
Chris@0 8 function queue_drush_help($section) {
Chris@0 9 switch ($section) {
Chris@0 10 case 'drush:queue-run':
Chris@0 11 return dt('Run Drupal queue workers. As opposed to "drush cron" that can only be run one at a time on a single site, "drush queue-run" can be invoked as many times as the server load allows.');
Chris@0 12 }
Chris@0 13 }
Chris@0 14
Chris@0 15 /**
Chris@0 16 * Implements hook_drush_command().
Chris@0 17 */
Chris@0 18 function queue_drush_command() {
Chris@0 19 $items['queue-run'] = array(
Chris@0 20 'description' => 'Run a specific queue by name',
Chris@0 21 'arguments' => array(
Chris@0 22 'queue_name' => 'The name of the queue to run, as defined in either hook_queue_info or hook_cron_queue_info.',
Chris@0 23 ),
Chris@0 24 'required-arguments' => TRUE,
Chris@0 25 'options' => array(
Chris@0 26 'time-limit' => 'The maximum number of seconds allowed to run the queue',
Chris@0 27 ),
Chris@0 28 );
Chris@0 29 $items['queue-list'] = array(
Chris@0 30 'description' => 'Returns a list of all defined queues',
Chris@0 31 'outputformat' => array(
Chris@0 32 'default' => 'table',
Chris@0 33 'pipe-format' => 'csv',
Chris@0 34 'field-labels' => array(
Chris@0 35 'queue' => 'Queue',
Chris@0 36 'items' => 'Items',
Chris@0 37 'class' => 'Class',
Chris@0 38 ),
Chris@0 39 'ini-item' => 'items',
Chris@0 40 'table-metadata' => array(
Chris@0 41 'key-value-item' => 'items',
Chris@0 42 ),
Chris@0 43 'output-data-type' => 'format-table',
Chris@0 44 ),
Chris@0 45 );
Chris@0 46
Chris@0 47 return $items;
Chris@0 48 }
Chris@0 49
Chris@0 50 /**
Chris@0 51 * Validation callback for drush queue-run.
Chris@0 52 */
Chris@0 53 function drush_queue_run_validate($queue_name) {
Chris@0 54 try {
Chris@0 55 $queue = drush_queue_get_class();
Chris@0 56 $queue->getInfo($queue_name);
Chris@0 57 }
Chris@0 58 catch (\Drush\Queue\QueueException $exception) {
Chris@0 59 return drush_set_error('DRUSH_QUEUE_RUN_VALIDATION_ERROR', $exception->getMessage());
Chris@0 60 }
Chris@0 61 }
Chris@0 62
Chris@0 63 /**
Chris@0 64 * Return the appropriate queue class.
Chris@0 65 */
Chris@0 66 function drush_queue_get_class() {
Chris@0 67 return drush_get_class('Drush\Queue\Queue');
Chris@0 68 }
Chris@0 69
Chris@0 70 /**
Chris@0 71 * Command callback for drush queue-run.
Chris@0 72 *
Chris@0 73 * Queue runner that is compatible with queues declared using both
Chris@0 74 * hook_queue_info() and hook_cron_queue_info().
Chris@0 75 *
Chris@0 76 * @param $queue_name
Chris@0 77 * Arbitrary string. The name of the queue to work with.
Chris@0 78 */
Chris@0 79 function drush_queue_run($queue_name) {
Chris@0 80 $queue = drush_queue_get_class();
Chris@0 81 $time_limit = (int) drush_get_option('time-limit');
Chris@0 82 $start = microtime(TRUE);
Chris@0 83 $count = $queue->run($queue_name, $time_limit);
Chris@0 84 $elapsed = microtime(TRUE) - $start;
Chris@0 85 drush_log(dt('Processed @count items from the @name queue in @elapsed sec.', array('@count' => $count, '@name' => $queue_name, '@elapsed' => round($elapsed, 2))), drush_get_error() ? LogLevel::WARNING : LogLevel::OK);
Chris@0 86 }
Chris@0 87
Chris@0 88 /**
Chris@0 89 * Command callback for drush queue-list.
Chris@0 90 */
Chris@0 91 function drush_queue_list() {
Chris@0 92 $queue = drush_queue_get_class();
Chris@0 93 return $queue->listQueues();
Chris@0 94 }
Chris@0 95