5

12時間ごとにcronでzendフレームワークアクション(インデックスコントローラ内)を実行するにはどうすればよいですか?

ケース:

  1. zfツールで作成された基本的な(モジュールなしの)zendプロジェクト(1.11)があります。

  2. メインの IndexController 内に cronAction() - url http://mydomain/index/cronが存在します。

  3. cron で 12 時間に 1 回 cronAction() を実行する必要があります。

ありがとう

4

3 に答える 3

13

crontab ファイルを見つけて、次の行を追加します。

0 0,12 * * * curl --silent --compressed http://mydomain/index/cron

必ずしもcurlではなく、lynxやwgetなどの他のツールでも実行できます-上記は単なる例です。

于 2011-06-29T11:30:22.927 に答える
5

私は少し遅れていることを知っていますが、別の解決策を残したいと思います。おそらくそれは他の人を助けるでしょう、あなたがモデル内にあなたのビジネスルールを持っているならあなたは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スクリプトの実行時間制限はありません。

于 2012-04-24T04:18:09.820 に答える