はじめに
今回は、OpenCart用Cronをプログラムを作成してみる
一応、既存のライブラリを利用できるようにする。
既存ソースみてみる
system/framework.php,admin/controller/startup/startup.phpあたりを拝借してなんとかなりそう。そのままファイルを使ってもよいがきっといらないものもある感じなので
今回は夜間基幹連動を想定して作成します。
実際のコード
想定は、OpenCartのルートの置くようにしています、ただ、セキュリティに配慮する場合は、別の箇所をお勧めします。現在はディレクトリ構造の兼ね合いで説明できるようにしています。
コードのほとんどがframework.php、startup.phpの内容です。不要なもの、必要なものは別途追記すれば問題ないと思います。
ファイル名は適当に決めて保存してください。実際のcronに設定する実行ファイルになります。
Dispatchの部分を作ります。
admin/controller配下にtestというフォルダーを作ります。
crontest.phpという名前で下記コードを保存します。関数名はdispatchでcronを指定したので関数名をcronにします。
/コントローラー内フォルダー名/phpファイル名/関数名でdispatchを呼び出ししています。/test/crontest/cron
クラス名も同様ControllerTestCrontestと先頭大文字で命名します。実際に使用する場合は、セキュリティ的にディレクトリ名、ファイル名は変更してください。dispatchで記載したパスも変更してください。
記載しているコード自体はテストコードです。メンテナンスフラグを立てて。各SQLを読み込み表示します。表示後メンテナンスフラグを解除します。
これで、OpenCartのソース内のコードをコピーしてそのまま。ここで使用できるようになったと思います。
opencartのライブラリ使用しない場合(mysqli)
さいごに
筆者は、linuxのcron想定で、チェックもコンソール上しか確認していません。web版でのアクセスの場合パーミッションなど、外部からのアクセスも想定する必要があると思います。
まぁ、直接PHP関数使用して、SQL文書いてもよかったのですが、既存のライブラリとか使えたほうが便利かなと思いながら・・・
あと、注意点としては、opencartのDBライブラリは、query関数で、全件メモリに積んでしまうので、バッチに不向きかもしれません。
なので別途、fetch_assocなどで1ループずつ処理したほうがよい感じです。
関連記事
OpenCartのエクステンションインストール&作成5
前回の記事はこちらから
https://www.omakase.net/blog/2021/08/opencart-ext5.html
OpenCartのエクステンションインストール&作成4
記事はこちらから
https://www.omakase.net/blog/2021/08/opencart-ext4.html
OpenCartのエクステンションインストール&作成3
記事はこちらから
https://www.omakase.net/blog/2021/08/opencart-ext3.html
OpenCartのエクステンションインストール&作成2
記事はこちらから
https://www.omakase.net/blog/2021/08/opencart-ext2.html
OpenCartのエクステンションインストール&作成1
記事はこちらから
https://www.omakase.net/blog/2021/08/opencart-ext1.html
OpenCartのインストール
記事はこちらから
https://www.omakase.net/blog/2021/07/opencart.html