2011-09-06 31 views
7

Tôi đang cố gắng làm một công việc cron với một trang web được xây dựng trong CodeIgniter - Tôi có quyền truy cập vào tính năng cals CPanel có ai có thể gợi ý cách tốt nhất để thiết lập một công việc cron bằng CPanel không?Cron jobs in codeigniter

Tôi đang sử dụng Codemgniter để không thể chắc chắn cách gọi bộ điều khiển trong một công việc định kỳ?

ví dụ http://admin.com/sites/publish/

Làm thế nào tôi có thể truy cập chức năng này xuất bản trong điều khiển các trang web sử dụng một công việc định kỳ?

Trả lời

9

Cách tốt nhất là để gọi từ dòng lệnh trong công việc định kỳ ...

php /path/to/index.php controller >> /dev/null 

Bạn có thể chạy các bộ điều khiển thông qua các dòng lệnh trong CI, xem here.

+0

Điều này có thể đúng cho mục đích của tôi làm bạn nghĩ? php /home/username/public_html/index.php/sites/publish >>/dev/null – Zabs

+2

+1 từ tôi nhưng tôi sẽ chỉ thêm dựa trên câu hỏi và đường dẫn cho bạn sử dụng 'php/path /to/index.php các trang web xuất bản >>/dev/null' (nhận ra bạn vừa đưa ra một ví dụ chỉ cần nghĩ rằng tôi sẽ làm rõ) – simnom

+0

Hi một lần nữa - chỉ cần cố gắng và cron đang chạy nhưng tôi nhận được thông báo Cron Daemon sau gửi cho tôi. NB Bộ điều khiển được gọi là trang web & chức năng được gọi là cron /bin/sh: /home/username/public_html/index.php/sites/publish: Không phải là thư mục – Zabs

5

Đối với tôi cách dễ dàng hơn để làm điều này là sử dụng cURL và thực hiện các url trong cron:

curl http://admin.com/sites/publish/ 

Nếu bạn cần phải đảm bảo các url, bạn có thể gửi dữ liệu qua đường bưu điện sử dụng:

curl -X POST -d "apikey=yourapikey&another=variable" http://admin.com/sites/publish/ 

Bằng cách này bạn không phải chiến đấu với các tham số php và các cấu hình khác nhau.

+0

bằng cách này, bạn trưng bày công việc cron của mình cho toàn thế giới – Peacemoon

+0

Bạn có thể bảo vệ chúng bằng cách sử dụng một htpasswd. Tôi biết nó an toàn hơn bằng cách sử dụng php thay vì curl, nhưng đối với một số công cụ ngớ ngẩn nó dễ dàng hơn theo cách này. – juanrossi

2

tôi làm theo cách như vậy này, tạo thư mục cron

/application 
/cron 
    my_task.php 
/public 

làm kịch bản cho mỗi /cron/my_task.php công việc định kỳ với nội dung

<? $_SERVER["SCRIPT_URL"] = "/controllerName/MethodName"; // you can set url in routes if you want 
    $_SERVER["HTTP_HOST"] = "your_site_address.com"; // without http://www 
    require(dirname(__FILE__) . "/../public/index.php"); // path to index.php 
?> 

làm điều khiển Cron như những người khác, nhưng thêm xác thực trên IP trong __construct

và chạy cuối cùng như

1 10 * * * cd /path_to_site_folder/cron/ && usr/local/bin/php /path_to_site_folder/cron/my_task.php >> path_to_log/some.log 
1

Đối Cronjob thử này để truy cập vào lệnh điều khiển dòng, chức năng và params:

php index.php/controller/function/param1/param2/param3 etc 

hoặc

php index.php controller function param1 param2 param3 etc