Cùng một mã nguồn PHP và môi trường Nginx, cùng mở một trang quản trị (admin tool) có lượng dữ liệu render lớn F5 lúc được, lúc bị ngắt cụt mã HTML giữa chừng (trang web mất chân trang, giao diện vỡ, thiếu dữ liệu).

  1. Hiện tượng (Symptom) # Triệu chứng: Cùng một mã nguồn PHP và môi trường Nginx, cùng mở một trang quản trị (admin tool) có lượng dữ liệu render lớn: Một server chạy bình thường. Một server gặp tình trạng tải trang chập chờn: F5 lúc được, lúc bị ngắt cụt mã HTML giữa chừng (trang web mất chân trang, giao diện vỡ, thiếu dữ liệu). Đặc điểm gây nhiễu: Các thông số tài nguyên cốt lõi giữa 2 bên hoàn toàn giống nhau ( memory_limit = 4096M , max_execution_time = 0 , output_buffering = 0 , cấu hình pool PHP-FPM đồng nhất). 2. Nguyên nhân gốc rễ (Root Cause) # Cơ chế đệm response của Nginx kết hợp FastCGI: Khi PHP trả dữ liệu về Nginx, nếu payload nhỏ hơn bộ đệm trong RAM ( fastcgi_buffer_size / fastcgi_buffers , thường là 4KB–64KB tùy OS/arch), Nginx stream trực tiếp về client mượt mà. Khi dữ liệu HTML vượt quá kích thước buffer RAM, Nginx bắt buộc phải băm (hash) và ghi phần dữ liệu vượt ngưỡng vào thư mục tạm trên ổ cứng ( fastcgi_temp/ ). Lỗi phát sinh: Thư mục cài đặt Nginx hoặ...

Fix lỗi undefined index $_SERVER['HTTPS'] và port $_SERVER['SERVER_PORT'] luôn trả ra 80 khi truy cập vào https

Khi lập trình php cần thao tác trên host https. Các bạn có thể gặp trường hợp  undefined index $_SERVER['HTTPS'] và port $_SERVER['SERVER_PORT'] luôn trả ra 80 khi truy cập vào https. Có thể tạm fix như sau:

1. Các bạn chỉ cần sửa vhost cấu hình apache như thế này:

<VirtualHost *:80>
   DocumentRoot D:\xampp\htdocs\abc
   ServerName abc.vn.vn
</VirtualHost>
<VirtualHost *:443>   
   setEnv HTTPS on   
   DocumentRoot D:\xampp\htdocs\abc
   ServerName abc.vn:443   
   UseCanonicalName On
</VirtualHost>

2. Restart apache
3. Dump xem kết quả
var_dump($_SERVER); die;

Bài đăng phổ biến từ blog này

Gọi hàm nhiều cấp trong MIPS

Đệ quy trong MIPS