Tôi đang ở trên một máy chủ được chia sẻ (Siteground) và vì tập lệnh PHP WordPress của tôi mất hơn 30 giây, nó sẽ trả về thời gian chờ 504 Gateway.
Truy vấn của tôi có chạy và hoàn thành nếu nó không gặp phải lỗi nào nữa không?
Chỉnh sửa: Tôi đã hỏi tại sao tôi nhận được lỗi này cho nhóm lưu trữ của mình, ở đây, chuyên gia Hosting của Siteground đã giải thích vấn đề như sau:
Chúng tôi sử dụng cả Apache + Nginx trên tất cả các máy chủ của chúng tôi. Apache được sử dụng cho dịch vụ web chính, trong khi Nginx được sử dụng làm proxy ngược và phân phối bộ đệm. Khi phản hồi không thể được cung cấp từ bộ đệm (thường thì điều này đề cập đến nội dung động), một yêu cầu từ Nginx được thực hiện đối với Apache. Điều này khi Apache đang xử lý yêu cầu, chuyển tiếp nó đến trang web của bạn và theo logic PHP, các truy vấn MySQL có thể được thực hiện hoặc lấy dữ liệu khác. Khi quá trình này mất quá nhiều thời gian và Apache không trả lại phản hồi kịp thời cho Nginx, bạn sẽ thấy lỗi này. Trong ngắn hạn, Apache không thể phục vụ yêu cầu vì ứng dụng đã hoàn tất quy trình trong thời gian cho phép. Điều này cũng có nghĩa là quá trình bắt đầu có lẽ chưa hoàn thành đầy đủ và một số dữ liệu / hành động có thể đã được lưu / thực thi.
Chuyên gia nói rằng "initiated process most probably not completed fully"
,
Thêm chi tiết về kịch bản của tôi: Kịch bản của tôi thêm các sản phẩm thương mại điện tử với các biến thể sử dụng wp_insert_post
phương thức vào trang web wordpress của tôi. Sau khi thêm sản phẩm, nó sẽ hiển thị hình ảnh của các sản phẩm mới được thêm vào.
Khi tôi thêm 1 sản phẩm (40 biến thể), nó sẽ hoàn thành và hiển thị hình ảnh sản phẩm. Khi tôi thêm 6 sản phẩm (240 biến thể), tôi nhận được lỗi trực tiếp trong trình duyệt của mình.
Vì vậy, để kiểm tra thêm vấn đề này, tôi đã sửa đổi mã của mình và viết lại bằng ajax và thêm một thanh quy trình như hệ thống. (Mà tăng một số cho mỗi biến thể).
Sau khi tôi chạy mã cho 1 sản phẩm (với 40 biến thể), số tiến trình tăng lên 40 và nó sẽ hiển thị hình ảnh sản phẩm.
Khi tôi chạy mã cho 6 sản phẩm, số tiến trình tăng lên 240, nhưng nó không hiển thị gì cả và khi tôi kiểm tra, nó nhận được lỗi 504. ( jQuery.Ajax
phần lỗi chức năng)
Vì vậy, điều này khiến tôi nghĩ rằng truy vấn chạy ngay cả khi hết thời gian, nhưng tôi vẫn không thể chắc chắn và đang tìm kiếm thông tin chi tiết về lỗi hết thời gian chờ cổng 504 vì không có tài liệu tốt về điều này.