Có 2 đoạn code PHP giống nhau nhưng trên 1 server thì chạy được, 1 server thì bị 503 và không có log
set_time_limit(180);
sleep(50);
Log::info('Van chay duoc den het script');
Kiểm tra thì đều chạy php-fpm, cấu hình php.ini giống nhau max_execution_time trong php.ini đều chỉ là 30 giây
Như vậy phải có 1 thông số cấu hình nào đó của web server đang khác nhau. Kiểm tra thì tòi ra kết quả:
1 anh server là nginx đang có fastcgi_read_timeout là 600 => cái này chạy được code PHP phía trên
1 anh server là apache đang để request_terminate_timeout là 30 => dù set_time_limit nhưng 30 giây là sẽ dừng script (chết giữa chừng) và báo lỗi 503
Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Trường hợp này thì xử lý thế nào?
Cách 1: Tăng timeout cho webserver
Cách 2: Chuyển code cần chạy sang chạy ở chế độ CLI (cronjob/command line)
Mỗi cách đều có ưu nhược điểm riêng, có thể phù hợp với người/hệ thống này nhưng lại ko phù hợp với người/hệ thống kia. Bạn tự cân nhắc và chọn cho mình cách xử lý!