Phalcon バッチファイル

広告

今回はPhalconでバッチファイルの作成方法についてです。
おおまかに以下の流れになります。
1) CLI(コマンドラインアプリケーション)の作成
2) taskの作成(自動で実行されるファイル)
3) crontabの設定


バッジファイルの作成


CLIの作成


Phalconではおなじみのエントリポイントであるpublic/index.phpの代わりにcli用のファイルを作成してあげます。
> projectフォルダ/public/cli.php
<?php
use Phalcon\Di\FactoryDefault\Cli as CliDI;
use Phalcon\Cli\Console as ConsoleApp;
use Phalcon\Loader;

// Using the CLI factory default services container
$di = new CliDI();

/**
* Register the autoloader and tell it to register the tasks directory
*/
$loader = new Loader();

$loader->registerDirs(
[
'../app/tasks/', // tasksフォルダ内にバッチファイルを作成します
'../app/models/',
]
);

$loader->register();

// Load the configuration file (if any)
//$configFile = __DIR__ . '/config/config.php';
$configFile = '.app/config/config.php';

if (is_readable($configFile)) {
$config = include $configFile;

$di->set('config', $config);
}

// Create a console application
$console = new ConsoleApp();

$console->setDI($di);

/**
* Process the console arguments
*/
$arguments = [];

foreach ($argv as $k => $arg) {
if ($k === 1) {
$arguments['task'] = $arg;
} elseif ($k === 2) {
$arguments['action'] = $arg;
} elseif ($k >= 3) {
$arguments['params'][] = $arg;
}
}

/*
* DB接続設定 ご自身の設定に適宜変えてください
*/
$di->set('db', function () {
return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
"host" => "localhost",
"username" => "root",
"password" => "****",
"dbname" => "****",
"charset" => "utf8"
));
});

try {
// Handle incoming arguments
$console->handle($arguments);
} catch (\Phalcon\Exception $e) {
// Do Phalcon related stuff here
// ..
fwrite(STDERR, $e->getMessage() . PHP_EOL);
exit(1);
} catch (\Throwable $throwable) {
fwrite(STDERR, $throwable->getMessage() . PHP_EOL);
exit(1);
} catch (\Exception $exception) {
fwrite(STDERR, $exception->getMessage() . PHP_EOL);
exit(1);
}


tasksの作成


①バッチファイルの格納フォルダになります。tasksフォルダを作成しましょう。
> projectフォルダ/app/tasks
②tasksフォルダを作成したらバッチファイルの作成です。テストファイルとしてMainTask.phpをtasksフォルダ内に作成します。
> projectフォルダ/app/tasks/MainTask.php
<?php
class MainTask extends Task
{
public function mainAction()
{
echo 'This is the default task and the default action' . PHP_EOL;
}

/**
* @param array $params
*/
public function testAction(array $params)
{
echo sprintf('hello %s', $params[0]);
echo PHP_EOL;
echo sprintf('best regards, %s', $params[1]);
echo PHP_EOL;
}
}


実行方法


コマンドラインから実行


※絶対パスで指定してますが、コマンドラインからの実行はカレントディレクトリからのパスの指定も勿論できます。要はcli.phpをphpコマンドで実行してあげればよい。
# php /var/www/html/プロジェクトフォルダ/public/cli.php クラス名 アクション名 パラメータ

ちなみに引数を配列にするときや、複数引数を持ちたいときは以下みたいな形で対応できます。
# php /var/www/html/プロジェクトフォルダ/public/cli.php クラス名 アクション名 パラメータ1 パラメータ2


crontabの設定


# crontab -e
分 時間 日 月 曜日 php /var/www/html/プロジェクトフォルダ/public/cli.php クラス名 アクション名 パラメータ1 パラメータ2

広告


この記事を読んだ人におススメな記事
Phalcon 404ページの実装

Phalcon 404ページの実装

PHP 2018-08-30
Phalcon 静的URL

Phalcon 静的URL

PHP 2018-09-02
Phalcon ページングの実装

Phalcon ページングの実装

PHP 2018-09-23
Phalcon Viewコンパイルフォルダの指定

Phalcon Viewコンパイルフォルダの指定

PHP 2018-11-04

Profile