Yêu cầu thg 12 27, 2022 6:52 SA 327 0 1
  • 327 0 1
0

Maximum execution time of 60 seconds exceeded

Chia sẻ
  • 327 0 1

Chào anh em. Mình có vấn đề tí cần hỏi
Khi mình cho chạy 1 phương thức GET để lấy dữ liệu về thì Laravel lại báo Maximum execution time of 60 seconds exceeded, làm dữ liệu mình về không đủ.
Có cách nào để khắc phục vấn đề này không anh em?
Cảm ơn đã đọc bài viết. Cảm ơn admin duyệt bài

1 CÂU TRẢ LỜI


Đã trả lời thg 12 27, 2022 7:06 SA
Đã được chấp nhận
+2

Lỗi này anh em hay nói vui với nhau là "code thối", dẫn tới hiệu năng kém và chạy quá thời gian cho phép của server. Để làm nó chạy lại được thì rất dễ - đó là config PHP bằng mấy tham số như dưới đây:

  • max_execution_time
  • memory_limit

Việc sửa đổi các cấu hình thì sẽ gây ra các vấn đề kéo theo như một request được server xử lý quá lâu sẽ dẫn tới chiếm hết các tài nguyên server - nó sẽ thành điểm tuyệt vời để hacker nhắm vào giúp DOS server của bạn dễ hơn. Nếu config một con số chưa đủ cao (theo thời gian số lượng dữ liệu tăng lên) thì lỗi sẽ lại tái diễn.

Các trên không giải quyết triệt để vấn đề. Vấn đề cốt lõi ở đây là chất lượng code. Bạn nên refactor lại code, áp dụng thêm các giải pháp khác nhau như: Paginate, cache, lazy-loading... để code xử lý trả ra kết quả thật nhanh. Từ đó dù dữ liệu nhiều hay ít thì server vẫn hoạt động ổn định.

Chia sẻ
Avatar Tấn Đạt Nguyễn @datntclickmediaseo
thg 12 27, 2022 7:13 SA

Cảm ơn bạn về câu trả lời. Mình đã tìm ra giải pháp tạm thời là tăng max_execution_time.

thg 12 27, 2022 7:16 SA

@datntclickmediaseo Mình recommend bạn cài thêm cái library Laravel Debugbar hoặc Telescope. Sau đó dùng bọn nó để check xem đoạn code nào chạy lâu. SQL query có bị n+1 hay không, SQL query nào bị chậm. Từ đó dễ dàng đưa ra các đối sách để khắc phục hiệu năng.

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí