"Mẹo" lập trình và kiểm lỗi cronjobs trong NukeViet

Thứ sáu - 20/11/2015 23:03
Mình xin giới thiệu một số tùy biến, giúp các lập trình viên thuận tiện hơn trong việc lập trình và kiểm lỗi cronjobs.
Cronjobs trong NukeViet là một chức năng "họat động ngầm" để làm một nhiệm vu nào đó do người lập trình quy định. Việc lập trình cronjobs khá đơn giản vì nội dung tương tự như lập trình module, song việc kiểm lỗi chưa bao giờ là đơn giản đối với những cronjobs phức tạp. Trong lập trình module, việc lập trình và kiểm lỗi quá dễ dàng cho lập trình viên, chỉ cần chạy và nhận được thông báo lỗi. Vậy khi thực thi cronjobs thì việc kiểm lỗi sẽ như thế nào?

Các bạn đã biết, tiến trình tự động của NukeViet cho phép cài đặt một cronjobs với các tham số truyền vào, và chu kỳ thời gian thực thi tiến trình đó. Và việc thực thi này hoàn toàn tự động và người dùng không dễ được nhìn thấy các thông báo lỗi (nếu có). Để việc này trở nên dễ hơn, làm theo các bước bên dưới.

Lưu ý: Khi nói là lập trình cronjobs tương tự như lập trình module, bạn có thể viết code cronjobs ở một func bất kỳ của module, sau đó đưa vào hàm cron, điều này hoàn toàn đúng. Nhưng, trong một số trường hợp phức tạp, cronjobs có thể không chạy, vì có một số tài nguyên ở module được dùng, mà trong cronjobs không có để dùng. Ví dụ: Bạn có thể dùng biến $site_mods trong module, chứ không dùng được trong cronjobs. Vậy nên mình mới viết bài viết này.

1. Giả sử trường hợp chúng ta đã viết xong một chức năng Tự động gửi email chúc mừng sinh nhật thành viên, chức năng đã chạy ổn khi kiểm tra trên module, và giờ hãy đưa code này chạy dưới dạng cronjobs. Việc chúng ta bây giờ là kiểm tra xem nó họat động chưa, và nếu chưa họat động thì lỗi do đâu. Xem thêm Hướng dẫn lập trình cronjobs

2. Truy cập Cấu hình / Tiến trình tự động để thêm tiếp trình này vào chạy cùng hệ thống.

3. Thực hiện sửa core hệ thống.
Mở /includes/core/cronjobs.php
Tìm
if( $cron_allowed )
Thêm lên trên
$cron_allowed = true;
Tìm
if( file_exists( $check_run_cronjobs ) and @filemtime( $check_run_cronjobs ) > $p )
{
	continue;
}
Trong khối lệnh if này, comment hoặc xóa continue;
Chỉnh sửa này giúp bỏ qua kiểm tra việc thực thi cronjobs trước đó, khiến cronjobs luôn được thực hiện mỗi lần truy cập, bỏ qua thời gian thực hiện giữa 2 lần chạy.

4. Truy cập đường dẫn http://domain/index.php?second=cronjobs để thực thi cronjobs. Khi truy cập đường dẫn này, hệ thống sẽ thực hiện tương tự như mỗi lần thực thi "ngầm" cronjobs, tất cả cronjobs đều được gọi.

5. Đến đây, bạn có thể sử dụng các kỹ thuật để kiểm lỗi trong code cronjobs. Sau khi kiểm tra xong, khôi phục lại file /includes/core/cronjobs.php

Tổng số điểm của bài viết là: 10 trong 2 đánh giá

Xếp hạng: 5 - 2 phiếu bầu
Click để đánh giá bài viết

  Ý kiến bạn đọc

Trung tâm ứng dụng NukeViet
Ghi rõ nguồn khi sao chép thông tin từ website này.

Powered by NukeViet - a product of VINADES.,JSC