12時間ごとにcronでzendフレームワークアクション(インデックスコントローラ内)を実行するにはどうすればよいですか?
ケース:
zfツールで作成された基本的な(モジュールなしの)zendプロジェクト(1.11)があります。
メインの IndexController 内に cronAction() - url http://mydomain/index/cronが存在します。
cron で 12 時間に 1 回 cronAction() を実行する必要があります。
ありがとう
12時間ごとにcronでzendフレームワークアクション(インデックスコントローラ内)を実行するにはどうすればよいですか?
ケース:
zfツールで作成された基本的な(モジュールなしの)zendプロジェクト(1.11)があります。
メインの IndexController 内に cronAction() - url http://mydomain/index/cronが存在します。
cron で 12 時間に 1 回 cronAction() を実行する必要があります。
ありがとう
crontab ファイルを見つけて、次の行を追加します。
0 0,12 * * * curl --silent --compressed http://mydomain/index/cron
必ずしもcurlではなく、lynxやwgetなどの他のツールでも実行できます-上記は単なる例です。
私は少し遅れていることを知っていますが、別の解決策を残したいと思います。おそらくそれは他の人を助けるでしょう、あなたがモデル内にあなたのビジネスルールを持っているならあなたはcronでファイルを実行することができます
以下の内容でパブリックフォルダにファイルを作成します。例:cron.php
<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap();
$model = new Application_Model_Name();
$model->runTask();
次に、cronタブエントリを追加します
0 0,12 * * * php /path/to/your/project/cron.php
PHP CLIを使用して実行するため、最初の回答よりもうまく機能するはずです。スクリプトに1分以上かかり、そのcronジョブを実行するためにネットワーク接続が必要ない場合は、phpスクリプトの実行時間制限はありません。