Ada beberapa cara untuk menyetel waktu tunggu untuk php-fpm. Di /etc/php5/fpm/pool.d/www.conf
saya menambahkan baris ini:
request_terminate_timeout = 180
Juga, di /etc/nginx/sites-available/default
saya menambahkan baris berikut ke blok lokasi server yang dimaksud:
fastcgi_read_timeout 180;
Seluruh blok lokasi terlihat seperti ini:
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 180;
include fastcgi_params;
}
Sekarang mulai ulang php-fpm dan nginx dan seharusnya tidak ada lagi waktu tunggu untuk permintaan yang membutuhkan waktu kurang dari 180 detik.
fastcgi_read_timeout
dilocation
blok itu, waktu masih habis setelah 60 detik.location
blok yang menangani skrip php, bukan di docroot.Coba tautan ini , ini memiliki solusi yang lebih baik tentang cara memperbaikinya. Jadi langkah-langkahnya adalah:
nginx.conf
file Anda yang terletak di/etc/nginx
direktori.Tambahkan kode di bawah ini
http {
di bawah bagian:Catatan: Jika sudah ada, ubah nilainya sesuai.
Muat ulang Nginx dan php5-fpm.
Jika kesalahan terus berlanjut, pertimbangkan untuk meningkatkan nilainya.
sumber
/etc/nginx/sites-available/mysite.com
.Anda tidak dapat menggunakan PHP untuk mencegah batas waktu yang dikeluarkan oleh nginx.
Untuk mengkonfigurasi nginx agar memiliki lebih banyak waktu lihat
proxy_read_timeout
direktif .sumber
Jawaban yang benar adalah meningkatkan fastcgi_read_timeout dalam konfigurasi Nginx Anda.
Sederhana seperti itu!
sumber
Tambahkan variabel ini ke file nginx.conf:
Dan kemudian restart:
sumber
Ada tiga jenis batas waktu yang dapat terjadi dalam kasus seperti itu. Terlihat bahwa setiap jawaban difokuskan hanya pada satu aspek dari kemungkinan-kemungkinan ini. Jadi, saya berpikir untuk menuliskannya sehingga seseorang yang berkunjung ke sini di masa mendatang tidak perlu memeriksa setiap jawaban secara acak dan mendapatkan kesuksesan tanpa mengetahui mana yang berhasil.
Jadi perbaikan untuk setiap masalah adalah sebagai berikut.
nginx Client timeout
nginx proxied server timeout
Jadi gunakan yang Anda butuhkan. Mungkin dalam beberapa kasus, Anda memerlukan semua konfigurasi ini. Saya memerlukannya.
sumber
Anda perlu menambahkan arahan nginx tambahan (untuk
ngx_http_proxy_module
) dinginx.conf
, misalnya:Pada dasarnya
proxy_read_timeout
arahan nginx mengubah waktu tunggu proxy,FcgidIOTimeout
adalah untuk skrip yang diam terlalu lama, danFcgidBusyTimeout
untuk skrip yang terlalu lama untuk dieksekusi.Juga jika Anda menggunakan aplikasi FastCGI, tingkatkan opsi ini juga:
Kemudian muat ulang nginx dan PHP5-FPM.
Plesk
Di Plesk, Anda dapat menambahkannya di Pengaturan Server Web di bawah Arahan nginx tambahan .
Untuk cek FastCGI di Pengaturan Server Web di bawah Arahan tambahan untuk HTTP .
Lihat: Bagaimana cara memperbaiki masalah batas waktu FastCGI di Plesk?
sumber
FcgidBusyTimeout
variabel hanya ada untuk Apache?Karena Anda menggunakan php-fpm, Anda harus memanfaatkan fastcgi_finish_request () untuk memproses permintaan yang Anda tahu bisa memakan waktu lebih lama.
sumber
Penggunaan
set_time_limit(0)
tidak berguna saat menggunakan php-fpm atau pengelola proses serupa.Garis bawah tidak untuk digunakan
set_time_limit
saat menggunakanphp-fpm
, untuk menambah waktu tunggu eksekusi Anda, periksa tutorial ini .sumber
Saya mengatasi masalah ini dengan konfigurasi APACHE! Semua metode (dalam topik ini) salah untuk saya ... Lalu saya coba konfigurasi apache chanche:
Timeout 3600
Kemudian skrip saya berhasil!
sumber