2010-07-30 4 views
8

tôi đã quản lý để gửi nhiều email (check here) .i bị kẹt khi gửi email tự động qua cron.Cách gửi email qua cron job usng PHP mysql

Đây là những gì tôi cần - trong khi quản trị viên gửi email, tôi lưu trữ thư, email, ngày sự kiện trong cơ sở dữ liệu. bây giờ tôi đang cố gắng để thiết lập một công việc cron để gửi email cho tất cả các id từ bảng với thông điệp tôi có như một lời nhắc nhở. tôi không quen thuộc với kịch bản lệnh cron job, bất cứ ai có thể giúp đỡ trong việc hướng dẫn tôi đúng cách để viết kịch bản mà tôi có thể đặt trong tab cron. Tôi dự định gửi hai thư - một ngày chính xác trước sự kiện và vào ngày diễn ra sự kiện.thanks

Trả lời

9

Chỉ cần viết kịch bản PHP bình thường - tạo một tập lệnh sẽ hoạt động nếu được khởi chạy trực tiếp từ trình duyệt. Sau đó sắp xếp mà file PHP rất giống nhau để chạy trong cron, sử dụng điều này như một hướng dẫn:

http://www.unixgeeks.org/security/newbie/unix/cron-1.html

Về cơ bản, sử dụng các giá trị ban đầu, xác định thời hạn (phút, giờ, ngày trong tuần, ngày trong tháng, v.v.) Sau đó, thiết lập người dùng nó chạy như, mà có khả năng là "apache" hoặc bất cứ điều gì daemon máy chủ web của bạn đang chạy theo. Sau đó thiết lập các "lệnh" cron đang chạy là php php_email_script.php (nơi "php_email_script.php" là tên của tập tin PHP của bạn

+0

Tôi đã từng làm như thế này, nhưng theo kinh nghiệm của tôi, phương pháp wget dễ bảo trì hơn nhiều, vì bạn vẫn chỉ có một điểm vào. Tất nhiên bạn cần phải nhận thức được các tác động an ninh, do đó, để giữ nó ở bên an toàn, kịch bản không nên lấy các đối số. – mvds

+0

Xin chào, cảm ơn, tôi đã làm theo hướng dẫn của bạn và tôi đã làm điều đó. nó hoạt động tốt! Tôi sẽ đăng câu trả lời (truy vấn đơn giản và chức năng thư) làm câu trả lời. Tôi có nên đăng bài đó dưới "trả lời câu hỏi của bạn" không? – Jay

+0

hi, tôi đã nhanh chóng trả lời, nếu truy vấn của tôi trả về 3 bản ghi mà ngày tháng sau ngày hiện tại, nó chỉ gửi thư cho người đầu tiên chứ không phải cho người khác. Tôi đã thử trong khi vòng lặp nhưng điều đó không giúp đỡ. bất kỳ đề xuất? – Jay

5

30 phút và vẫn không có câu trả lời, đây là một vài cánh cửa mở ra:.

  • cron đọc quy tắc từ toàn hệ thống /etc/crontab hoặc từ crontab cá nhân mà bạn chỉnh sửa bằng crontab -e
  • cron có định dạng nơi bạn nói điều gì xảy ra/phút/ngày/tháng, sử dụng google hoặc man crontab cho định dạng
  • cron có tác dụng phụ đáng kinh ngạc gửi thư đầu ra của lệnh tới người dùng sở hữu crontab

Bây giờ bạn đang nói rằng bạn đang sử dụng php. Cách dễ nhất để có được một số php chạy từ cron, là phát hành một wget -O - -q http://yoursite.com/yourprocessingscript.php?verysecret=123123 và có một kịch bản xử lý thích hợp trên yoursite.com. (Bạn có thể muốn để điều đó kịch bản kiểm tra $ _SERVER [ 'REMOTE_ADDR'])

Vì vậy, trong ngắn hạn, nếu bạn chỉ cần đặt sự kỳ diệu ngay trong/etc/crontab, như

0 0 * * * jay wget -q -O - "http://yoursite.com/processmidnight.php?secret=yes_very" 

và có kịch bản của bạn sản xuất một số đầu ra hợp lý, bạn sẽ nhận được một thư gửi đến người dùng địa phương jay, mà bạn có thể muốn chuyển tiếp.

+0

hi, cảm ơn, lời giải thích của bạn và câu trả lời dưới đây đã giúp tôi đi đúng hướng. tôi sẽ đăng những gì tôi có sớm. nó hoạt động tốt. cảm ơn. tôi đã thử phương pháp curl nhưng tôi đã làm bằng cách gọi script php trong tab cron. – Jay