タスクをスケジュールで実行すると完了しない

自動実行ジョブに非推奨とありましたので、以下を参考にタスクのスケジュール実行を試してみました。
https://documentation.concretecms.org/user-guide/running-site/tasks/advanced-task-scheduling

  1. [自動化設定]で[スケジューラー]を[有効]に設定

  2. 1 の schedule:run コマンドを毎分実行するよう crontab に追加
    エックスサーバーの[Cron 設定]では、毎分実行は推奨しない旨の警告が表示されますが、[コマンド]に以下を登録すると動作しました。
    /usr/bin/php7.4 /home/サーバーID/ドメイン名/public_html/concrete/bin/concrete concrete:scheduler:run >> /dev/null 2>&1

  3. [タスク]で[Schedule Recurring Task]に以下を追加
    お試しなので色々追加してみました。

  • キャッシュをクリア
  • ファイル再スキャン
  • 古いページバージョンを削除
  • サムネイル生成
  • サイトマップの生成
  • コンテンツのインデックス再作成(Clear Index はい、インデックス再構築 はい)
  • 統計トラッカー更新

設定した時刻を見計らって[タスク]をリロードすると、[コンテンツのインデックス再作成]が完了していません。
[アクティビティ]を見ると[Currently Running]の表示が以下で止まっています。

Reindex Content
316 / 562

このタスクを[Now]で実行してみると最後まで実行されました。
スケジュールで実行した際のログの最終行は以下のようになっており、この ID のページは下書きでした。

Reindexing page ID: 382

この下書きを削除して再度実行すると、今度はゴミ箱にある下書きで止まりました。
下書きとゴミ箱を空にすると完了できました。

別のサイトでは[サムネイル生成]が完了できませんでした。
Google 翻訳を頼りにどうにか設定してみましたが、タスクをスケジュールで実行する手順はこれで問題ないでしょうか。
また途中で止まったままになっている[Currently Running]の表示を消すことはできますでしょうか。

Concrete CMS バージョン
9.1.1

PHP バージョン
7.4.x

サーバー
エックスサーバー

1 Like

すいません。
僕もタスクのところの設定を試行錯誤しているところです。
確認します。

ご回答ありがとうございました。
現状最後まで実行できないタスクは削除し、それ以外で経過を観察してみようと思います。

Cron は毎分でなくスケジュールと同じ時刻のみ実行でも動作するようですね。
検証の方法や精度にあまり自信はありませんが…

@Jun_22 調査しているのですが、ちょっと時間がかかっています。

確かに、サーバー上にいくつかインストールした 9.1.1 でも Reindex Content が終了できない問題を確認できました。

ただ、僕のローカルにインストールした 9.1.1 では正常に終了してしまい、どこが違うのか調査中です。

今、直面しているエラー

Messenger Worker Message Failed: /....../concrete/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php:129 Handling "Concrete\Core\Command\Process\Command\HandleProcessMessageCommand" failed: The EntityManager is closed.

ちなみに 9.0.2 などでは、データベースの文字列によって
以下の様なエラーが発生する様ですが、
これは 9.1.1 では直っています。


SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='```