動作未確認

      $reader = Reader::createFromPath($file[0]->getFileUri(), 'r');

      // 文字コードを判別するために10行程採取
      $inspection = '';
      foreach (range(1, 10) as $i) {
          $row = $reader->fetchOne($i);
          if ($row) {
              $inspection .= implode(',', $row);
          }
      }
      if ($inspection) {
          $csv = file_get_contents($file[0]->getFileUri());
          $encoding = mb_detect_encoding($csv, 'SJIS-win,EUC-JP,UTF-8,WINDOWS-1252,ISO-8859-15,ISO-8859-1,ASCII');
          if (!$encoding) {
          }
          $filter = urlencode('convert.iconv.' . $encoding . '/UTF-8');

          $reader->appendStreamFilter($filter);

      }

php csv import

// goodby/csvの例
      $records = [];
      $config = new LexerConfig();
      $config
          ->setDelimiter(",")
          ->setFromCharset('SJIS-win')
          ->setToCharset('UTF-8') // Customize target encoding. Default value is null, no converting.
      ;
      $lexer = new Lexer($config);
      $interpreter = new Interpreter();
      $interpreter->unstrict(); // Ignore row column count consistency
      $interpreter->addObserver(function(array $row) use (&$records) {
          $records[] = $row;
      });

      $lexer->parse($file_path, $interpreter);
      return $records;

// League\Csvの例
      $reader = Reader::createFromPath($file_path, 'r');
      $filter = urlencode('convert.iconv.SJIS-win/UTF-8');
      $reader->appendStreamFilter($filter);
      return $reader;
  }

drupal8 hook_install, hook_schema

hook_schema | database.api.php | Drupal 8.4.x | Drupal API

Hooks | core.api.php | Drupal 8.4.x | Drupal API

hook_update_N | module.api.php | Drupal 8.4.x | Drupal API

drupal8 queue

キューの仕組みあり。以下のようなアノテーションを記述してクラス定義
 * @QueueWorker(
 *   id = "cron_example_queue_1",
 *   title = @Translation("First worker in cron_example"),
 *   cron = {"time" = 1}
 * )
 
 // キューの登録
$container->get('queue');
$queue = $this->queue->get('cron_example_queue_1');

$item = new \stdClass();
$item->created = REQUEST_TIME;
$item->sequence = $i;

$queue->createItem($item);

// クーロンの実行
$container->get('cron');
$this->cron->run(); // 登録したキューが全て順次実行される

drupal記事

www.n5-creation.com

Drupal | レンタルサーバーのCPIスタッフブログ

docker4drupalでホストのコードで環境構築しようとしたとき、mariadbの接続でエラー

https://docker4drupal.readthedocs.io/en/latest/#2-mount-my-drupal-codebase

ホストにmariadbを指定したら解決 github.com