2012-07-23 45 views
7

tôi mới làm công việc cron. tôi đã nghiên cứu một số vấn đề cơ bản về công việc cron. tôi có thể gọi php bằng cách sử dụng tab cron. Bằng cách sử dụng lệnh sau trong/etc/crontabcách thiết lập công việc cron từ tập lệnh php?

10 * * * * root /usr/bin/php /var/www/PATH TO SCRIPT/email.php 

Trong email.php tôi đã mã sau

#!/usr/bin/php 
<?php 
    mail ("[email protected]", "Cron Successful Public HTML!","Hello World from mycron.php!"); 
?> 

Đối với mỗi 10 phút tôi nhận được mail. Nhưng tôi cần phải biết là có cách nào để gọi cron job từ php (gọi cron từ php) tôi nhận được một số ý tưởng bằng cách lướt nhưng tôi không thể tìm ra cách chính xác để thực hiện công việc của mình. Đây là mã mà tôi đã sử dụng để thêm công việc bằng cách sử dụng php

exec('echo -e "crontab -e \n2 * * * * /usr/bin/php /var/www/PATH TO THE SCRIPT/crontest1.php" '); 

Nó không hoạt động cho tôi. bất cứ ai có thể xin vui lòng hướng dẫn tôi làm thế nào để gọi điện thoại hoặc thêm cron từ php. vì vậy tôi có thể gửi mail bằng cách thực thi tập tin php & có thể thay đổi khoảng thời gian trong tập tin php.

Trả lời

8

Từ How can I set cron job through PHP script bởi Nick Clark:

này sẽ thêm một kịch bản chạy mỗi ngày lúc 9:30 sáng.

exec('echo -e "`crontab -l`\n30 9 * * * /path/to/script" | crontab -'); 

Bạn có thể gặp sự cố với quyền nếu bạn đang chạy tập lệnh này từ máy chủ web. Để giải quyết vấn đề này, tôi sẽ đề xuất một cách tiếp cận khác.

Đây là một giải pháp khả thi. Tạo danh sách các tập lệnh cần chạy. Bạn có thể lưu nó trong một tệp văn bản hoặc trong một cơ sở dữ liệu. Tạo một kịch bản để đọc danh sách này và chạy nó mỗi phút hoặc mỗi 5 phút (sử dụng cronjob). Kịch bản của bạn sẽ cần đủ thông minh để quyết định khi nào nên chạy danh sách các tập lệnh và khi nào thì chỉ cần thoát.

Bạn có thể làm như thế này ..

liên kết khác:

Install a cron job with a php script

How to invoke cron job from php script?

+0

tôi đã thử điều này, tôi chỉ muốn biết sau này tôi phải chạy tập tin php của tôi trong trình duyệt? tôi thực sự không có bất kỳ ý tưởng làm thế nào cron đó sẽ thực hiện. xin vui lòng giải thích nó :( – suganya

+0

cảm ơn .. đó thực sự là ý tưởng rất hay .. +1 –

1

Bạn sẽ có thể thêm nó trực tiếp

echo "2 * * * * /usr/bin/php /var/www/PATH TO THE SCRIPT/crontest1.php\n" > /etc/cron.d/username 
+0

OP đặc biệt hỏi làm thế nào để làm điều này từ PHP –

+0

@MichaelMior Đặt một 'exec()' xung quanh nó ... Khi tôi nhìn tại câu hỏi, có vẻ như, rằng anh ta hiểu nó. – KingCrunch

0

Nhiều môi trường không cho phép ghi vào một tập tin văn bản từ một trang php được gọi từ web. Tôi đồng ý rằng đây là một nguy cơ bảo mật mà người ta không nên dùng.

Tôi có một trang web lưu dữ liệu vào bảng MySQL thông qua cuộc gọi JQuery tới tập lệnh php. Trong Cron, tôi lên lịch một tập lệnh php khác, thường xuyên, kiểm tra dữ liệu trong bảng MySQL và thực hiện bất kỳ công việc nào cần thiết.

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