2009-10-16 37 views
6

Tôi sắp khởi chạy một trang web khá lớn lần đầu tiên. Tôi đã tắt tất cả các thông báo lỗi trong php.ini của tôi và các thông báo lỗi hiện được ghi vào một tập tin "error_log" trên máy chủ của tôi.Thực tiễn tốt nhất để quản lý lỗi trang web trực tiếp

Câu hỏi của tôi là, hiện tại các lỗi đã được ghi vào một tệp, cách tốt nhất để nhà phát triển web giữ được vị trí hàng đầu khi thấy/xảy ra lỗi ở đâu trên trang web?

Hiện tại, có vẻ như cách tốt nhất là liên tục kiểm tra tệp error_log hàng ngày, tuy nhiên điều này dường như không phải là giải pháp hiệu quả nhất. Lý tưởng nhất là tôi sẽ nhận được một email mỗi khi một lỗi xảy ra (với thông báo lỗi). Bất kỳ lời khuyên nào về cách tôi có thể giữ trên đầu trang của các lỗi sẽ được đánh giá rất nhiều!

Thông tin thêm
Chạy trên Shared Server (HostMonster)
website Tác giả trong PHP

Trả lời

5

Có hai chức năng chính trong PHP giúp bắt lỗi và ngoại lệ. Tôi đề nghị bạn hãy nhìn vào họ:

Trong công ty chúng tôi, chúng tôi xử lý tất cả các lỗi xảy ra trên các trang web của chúng tôi với những chức năng, xác định lỗi và ngoại lệ riêng của chúng tôi phương pháp xử lý.

Khi xảy ra lỗi, email sẽ được gửi đến nhóm nhà phát triển.

+0

Cảm ơn MaxiWheat. Nếu tôi đi tuyến đường này, sau đó trên mỗi kịch bản PHP tôi sẽ cần phải bao gồm xử lý lỗi tùy chỉnh của tôi, phải không? – justinl

+0

Có, trình xử lý tùy chỉnh đó cần được bao gồm trong mọi tập lệnh. Nếu bạn không muốn làm phiền, bạn có thể sử dụng nó trong một tập tin tự động prepend, thêm thông tin ở đây: http://php.net/manual/en/ini.core.php – MaxiWheat

+0

Hoặc sử dụng một khuôn khổ như Laravel để tránh mã spaghetti . –

0

Bạn có thể gửi email cho mình về lỗi, nếu không có email trong N giờ qua.

2

Địa điểm tôi đã từng làm việc trước đây đã sử dụng tiện ích mở rộng tùy chỉnh để xử lý ghi nhật ký lỗi. Nó về cơ bản INSERT DELAY các lỗi vào một DB với một số thông tin bổ sung. Sau đó, một công cụ quản trị riêng biệt được viết để có thể dễ dàng tìm kiếm, duyệt, sắp xếp và tự prune bảng nhật ký.

Tôi khuyên bạn không nên viết một tiện ích mở rộng tùy chỉnh, nhưng bạn sử dụng phương thức set_error_handler và chỉ viết thư cho một DB thay thế. Nếu DB không khả dụng, hãy ghi vào tệp dưới dạng bản sao lưu. Nó sẽ được thế giới dễ dàng hơn so với đối phó với một tập tin lớn và một định dạng một lần.

Nếu bạn muốn, bạn cũng có thể gửi email cho bản tóm tắt hàng giờ, nhưng tôi không đề nghị bạn gửi bất cứ điều gì nhiều hơn thế hoặc bạn sẽ tự ghét bản thân mình.

+0

một điểm cần lưu ý ở đây là set_error_handler() không xử lý tất cả các loại lỗi (từ php.net): Các loại lỗi sau không thể được xử lý bằng hàm do người dùng xác định: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING và hầu hết E_STRICT được nêu trong tệp nơi set_error_handler() được gọi. – AvatarKava

+0

Muốn báo cáo lỗi về cơ chế báo cáo lỗi bị hỏng là loại nghịch lý, phải không? –

0

Nếu bạn không mong đợi nhiều lỗi, nguồn cấp dữ liệu RSS/ATOM "riêng tư" có thể hoạt động tốt ... theo đó bạn không cần phải lo lắng nếu bạn không nhận được gì ... nhưng nếu bạn bắt đầu nhận được "cập nhật" bạn biết có vấn đề.

0

Tôi không biết Hostmonster xử lý xoay vòng nhật ký như thế nào, nhưng thông thường bạn muốn theo dõi số của tệp error_log của mình. Nếu kích thước nhảy đột ngột, chắc chắn bạn cần kiểm tra thứ gì đó để bạn có thể nhận được email thông báo rằng kích thước nhật ký đã tăng đột ngột.

Ngoài ra, bạn có thể kết hợp các nhật ký lỗi vào cuối tuần và gửi email cho chính mình và gỡ lỗi vào cuối tuần. Nếu một lỗi chỉ xảy ra một vài lần một tuần, có thể không phải là quá nghiêm trọng của sự cố.

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