2011-06-29 25 views
5

Làm thế nào chạy hành động khung zend (bên trong bộ điều khiển chỉ mục) bởi cron mỗi 12 giờ?Làm thế nào để chạy zend framework action (bên trong index controller) bởi cron mỗi 12 giờ?

Các trường hợp:

  1. Tôi có dự án cơ bản (không module) zend (1.11) mà được tạo ra bởi công cụ zf.

  2. Bên trong chỉ mục chínhController tồn tại cronAction() - url http://mydomain/index/cron.

  3. Cần chạy cronAction() một lần trong 12 giờ bằng cron.

Cảm ơn

Trả lời

13

Tìm file crontab và thêm dòng này:

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

Bạn cũng có thể làm điều đó với các công cụ khác, ví dụ như lynx hoặc wget, không necassarily curl - ở trên là chỉ là một ví dụ.

5

Tôi biết tôi là hơi muộn nhưng tôi muốn để lại một giải pháp khác, có thể nó giúp đỡ người khác, bạn có thể chạy các tập tin trong cron nếu bạn có quy tắc kinh doanh của bạn bên trong mô hình

Bằng cách tạo ra một tập tin trong thư mục công khai với nội dung bên dưới. Ex .: 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(); 

Sau đó thêm một mục tab cron

0 0,12 * * * php /path/to/your/project/cron.php 

Nó sẽ làm việc tốt hơn so với câu trả lời đầu tiên kể từ khi bạn sẽ chạy sử dụng PHP CLI thì bạn sẽ không có thời hạn thực hiện Tập lệnh php, trong trường hợp tập lệnh của bạn mất hơn một phút và bạn không cần kết nối mạng để chạy công việc cron đó

0

Trong khung công tác Zend 2 Bạn có thể chạy công việc định kỳ bằng cách sử dụng các tuyến điều khiển. Hãy xem ví dụ được đăng tại đây: http://collabedit.com/58v4v

Các vấn đề liên quan