search
テクノロジー

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
Article registration Article registration
mizuno's icon'
  • mizuno
  • @mizuno
月70万PVウェブメディア「計算フォーム」 https://calculator.jp/ でウェブ集客支援。書籍「WordPressユーザーのためのPHP入門」他一冊。TWITTER: @ounziw

投稿者の人気記事
コメントする
Loading...
コメントする
こちらもおすすめ!
Eye catch
クリプト

Uniswap v3を完全に理解した

池田らいく 2021/04/04
Like token Tip token
18.92 ALIS
Eye catch
他カテゴリ

ALISのシステム概観

ALISブロックチェーンブログ 2018/07/03
Like token Tip token
5.00 ALIS
Eye catch
テクノロジー

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

ゆうき 2020/08/12
Like token Tip token
270.93 ALIS
Eye catch
テクノロジー

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

おはぐろ氏 2020/02/15
Like token Tip token
85.05 ALIS
Eye catch
他カテゴリ

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

nonstop-iida 2020/03/04
Like token Tip token
124.82 ALIS
Eye catch
ゲーム

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

keiju togashi 2020/03/12
Like token Tip token
30.10 ALIS
Eye catch
クリプト

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

大田コウキ 2021/04/06
Like token Tip token
947.13 ALIS
Eye catch
テクノロジー

彼女でも分かるように解説:ディープフェイク

Jimmy 2020/03/17
Like token Tip token
32.10 ALIS
Eye catch
テクノロジー

iOS15 配信開始!!

IMAKARA 2021/09/23
Like token Tip token
7.20 ALIS
Eye catch
クリプト

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

nnppnpp(んぺー) 2021/09/08
Like token Tip token
46.60 ALIS
Eye catch
クリプト

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

otakucoin 2021/03/29
Like token Tip token
121.79 ALIS
Eye catch
クリプト

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

CryptoChick 2020/03/07
Like token Tip token
159.32 ALIS