Asked Dec 27th, 2022 6:52 a.m. 250 0 1
  • 250 0 1
0

Maximum execution time of 60 seconds exceeded

Share
  • 250 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 ANSWERS


Answered Dec 27th, 2022 7:06 a.m.
Accepted
+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.

Share
Avatar Tấn Đạt Nguyễn @datntclickmediaseo
Dec 27th, 2022 7:13 a.m.

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.

+1
| Reply
Share
Dec 27th, 2022 7:16 a.m.

@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.

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.