コマンドラインからcronスクリプトを実行およびデバッグ/テストする際に時々使用する「トリック」はcron.php
、Magentoアプリケーションのルートフォルダーにあるものを、実行するcronタスクを表す新しいスクリプトにコピーすることです。 、例:xyz_cron_task.php
。
そのスクリプトの下部にはtry/catch
ブロックがあります。
try {
Mage::getConfig()->init()->loadEventObservers('crontab');
Mage::app()->addEventArea('crontab');
Mage::dispatchEvent('default');
} catch (Exception $e) {
Mage::printException($e);
}
これを次のように変更して、関心のあるcronタスクだけを実行することができます。
try {
Mage::getModel('your_module/cron')->yourCronTask();
} catch (Exception $e) {
Mage::printException($e);
}
これで、コマンドラインまたはブラウザからcronタスクを実行できます。このページにアクセスするhttp://yourdomain/xyz_cron_task.php
と、cronタスクが実行されます(ただし、まだ興味深いものは表示されません)。
プロファイリングを機能させるには([管理]セクションでプロファイリングを既に有効にしている場合)、次のコードを後に追加しますrequire 'app/Mage.php';
。
Varien_Profiler::enable(); // This enables profiling
Mage::setIsDeveloperMode(true); // This allows you to see exceptions etc, but not stricly required.
これによりプロファイリングが有効になりますが、レンダリングするビューモデルがないため、プロファイラーの出力は表示されません。
try/catch
次のようにブロックに1行追加することで、プロファイラーブロックを出力できます。
try {
Mage::getModel('harmony/cron')->importProductsAndStock();
// The following line outputs the profiler block.
echo Mage::app()->getLayout()->createBlock("core/profiler")->toHtml();
} catch (Exception $e) {
Mage::printException($e);
}
これで、プロファイラーの出力が次のように表示されます(Aoe_Profiler拡張機能を使用していると仮定)。
Varien_Profiler::start()/stop()
これで、必要に応じてcronタスクに適切なコードを追加できます。
ハッピープロファイリング!