テクノロジー

concrete5で作ったホームページでプログラムを自動実行するジョブ

mizuno's icon'
  • mizuno
  • 2019/01/29 23:42

ホームページ作成ソフト concrete5 の標準機能紹介です。

ジョブ機能

concrete5 には、ジョブ機能が用意されています。ジョブ機能は、プログラムを定期的に実行する機能です。

●アクセスランキングを集計する
●外部APIから情報を取得する(天気情報、株価情報、為替情報等)
●長期間ログインしていないユーザーの無効化

といった場合に、一定期間ごとにプログラムを実行できます。

上の画像のように、管理画面から実行を押すことで実行することもできます。

単純な例だと、以下のようになります。

class XemPriceUpdate extends Job {
  protected $apiurl = 'https://api.zaif.jp/api/1/ticker/xem_jpy';
  public function getJobName() {
    return t("Price Update for Crypto currenty: xem");
  }
  public function getJobDescription() {
    return t("Price Update for Crypto currenty: xem");
  }
  public function run() {
    // ここに処理を書く
  }
}

run()の部分に書いた処理が、ジョブで実行される処理です。

たくさんの処理を実行する場合

run()の部分が単純な処理(=メモリやCPU負荷の少ない処理)であれば、上でOKです。しかし、必ずしもそうとは限りません。runの部分の処理が複雑な場合は、注意が必要です。

そういった場合に役立つように、QueueableJobという抽象クラスがconcrete5では用意されています。

class GetUsersArticles extends QueueableJob{
  public $jSupportsQueue = true; // 管理画面のUI設定と思われる
  public function getJobName(){
    return t('GetUserArticles');
  }
  public function getJobDescription() {
    return t('GetUserArticles');
  }
  public function start(ZendQueue $q) { // 前の処理
    $data = $this->getAlisData('urlを入れる');
    if ($data['Items']) {
      foreach ($data['Items'] as $array) {
        $q->send(serialize($array)); // processQueueItemを呼び出す
      }
    }
  }
  public function processQueueItem(ZendQueueMessage $msg) {
    // 実行する処理
  }
  public function finish(ZendQueue $q) { // 後の処理
    return t('User Articles Inserted.');
  }
}

processQueueItem()がメインの処理です。processQueueItem()を少しずつ実行するように準備するのがstart()です。処理が終わったら、finish()が実行されます。

処理する量がたくさんあっても、少しずつprocessQueueItem()を実行していけば、サーバーに過度な負荷がかかることを避けられます。

他の記事もごらんください。





公開日:2019/01/29
獲得ALIS:18.22
mizuno's icon'
  • mizuno
  • @mizuno
月70万PVウェブメディア「計算フォーム」 https://calculator.jp/ でウェブ集客支援。書籍「WordPressユーザーのためのPHP入門」他一冊。TWITTER: @ounziw

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
ゲーム

ドラクエで学ぶオーバフロー

Like token Tip token
30.10 ALIS
Eye catch
テクノロジー

なぜ、素人エンジニアの私が60日間でブロックチェーンゲームを制作できたのか、について語ってみた

Like token Tip token
270.93 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

Like token Tip token
61.20 ALIS
Eye catch
クリプト

Bitcoinの価値の源泉は、PoWによる電気代ではなくて"競争原理"だった。

Like token Tip token
159.32 ALIS
Eye catch
他カテゴリ

機械学習を体験してみよう!(難易度低)

Like token Tip token
124.82 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

Like token Tip token
947.13 ALIS
Eye catch
テクノロジー

オープンソースプロジェクトに参加して自己肯定感を高める

Like token Tip token
85.05 ALIS
Eye catch
クリプト

NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

Like token Tip token
121.79 ALIS
Eye catch
クリプト

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

Like token Tip token
46.60 ALIS
Eye catch
他カテゴリ

ALISのシステム概観

Like token Tip token
5.00 ALIS
Eye catch
クリプト

Uniswap v3を完全に理解した

Like token Tip token
18.92 ALIS