Magento の cron ジョブを登録する単純な拡張機能を作成しようとしていますが、ここで見逃しているものがあるようです。cron ジョブがスケジュールされることはなく、cron_schedule テーブルにエントリがありません。そこに入力しようとしても、ジョブは実行されませんでした。デフォルトの magento cron ジョブは正常に実行されています。/var/log/syslog を見ると、cron.sh が実行されていることがわかります。拡張機能は非常に簡単です。cron ジョブを設定するモデル (Observer.php) と config.xml だけです。私はばかのように感じます。私がオンラインで読んだことから、これはセットアップがかなり簡単なはずですが、それでも私はそれをどこにも持っていません.
config.xml の内容は次のとおりです。
<?xml version="1.0"?>
<config>
<modules>
<Twobuy_Import>
<version>1.0</version>
</Twobuy_Import>
</modules>
<global>
<models>
<twobuy_import>
<class>Twobuy_Import_Model</class>
</twobuy_import>
</models>
</global>
<crontab>
<jobs>
<twobuy_import>
<schedule>
<cron_expr>50 13 * * *</cron_expr> <!-- I set this value to say 10-20-30 minutes in the future, and wait, nothing ever happens -->
</schedule>
<run>
<model>twobuy_import/observer::parse</model>
</run>
</twobuy_import>
</jobs>
</crontab>
</config>
app/etc/modules の Twobuy_Import.xml は次のとおりです (拡張子は、システム -> 構成 -> 詳細の下に表示されます)。
<?xml version="1.0"?>
<config>
<modules>
<Twobuy_Import>
<active>true</active>
<codePool>local</codePool>
</Twobuy_Import>
</modules>
</config>
そして Observer.php
class Twobuy_Import_Model_Observer
{
public function parse()
{
$row = 1;
if (($handle = fopen(Mage::getBaseDir('var')."/orders/Stock/webstock.csv", "r")) !== FALSE)
{
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
if($row++ > 1)
{
if($product = Mage::getModel('catalog/product')->loadByAttribute('sku',$data[1]))
{
$product = Mage::getModel('catalog/product')->load($product->getEntityId());
$product->setPrice($data['3']);
$product->setAnalysiscode($data['4']);
if($data[5] == 'Y')
$stockData['is_in_stock'] = 0;
else
$stockData['is_in_stock'] = 1;
$product->setStockData($stockData);
try
{
$product->save();
}
catch (Exception $e)
{
Mage::log('Saving error with the following message: '.$e->getMessage());
Mage::log('Saving product:');
Mage::log($product->getData);
Mage::log('CSV line:');
Mage::log($data);
}
}
else
{
Mage::log('Import error, sku not found: '.$data[1]);
Mage::log('CSV line:');
Mage::log($data);
}
}
}
fclose($handle);
}
else
{
Mage::log('Import, no csv file found!')
}
}
}
また、システム->構成->システムからの私のcronジョブ構成は次のとおりです。
Generate Schedules Every 1
Schedule Ahead for 5
Missed if Not Run Within 20
History Cleanup Every 30
Success History Lifetime 60
Failure History Lifetime 600