Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan masalah masa pelaksanaan terlalu lama kaedah php

Bagaimana untuk menyelesaikan masalah masa pelaksanaan terlalu lama kaedah php

藏色散人
藏色散人asal
2021-07-23 10:51:324978semak imbas

Penyelesaian kepada masalah bahawa masa pelaksanaan kaedah PHP terlalu lama: 1. Tetapkan tamat masa permintaan get laluan Nginx 2. Tetapkan had atas masa pelaksanaan skrip PHP.

Bagaimana untuk menyelesaikan masalah masa pelaksanaan terlalu lama kaedah php

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3

Cara menyelesaikan masalah terlalu lama masa pelaksanaan kaedah php?

Selesaikan masalah bahawa masa pelaksanaan kaedah PHP terlalu lama mengakibatkan 502 Bad Gateway

Latar Belakang

Baru-baru ini mengalami masalah, ada sekeping kod PHP yang perlu melibatkan operasi masa IO yang panjang, dan tempoh ini akan menyekat urutan tempat permintaan itu terletak, menyebabkan permintaan itu tamat masa.

Anda mungkin berkata, apakah yang sukar tentang ini? Buka sahaja urutan untuk melakukannya secara tidak segerak, dan kemudian tidak mengapa untuk mengemas kini status. Ini benar-benar penyelesaian yang baik, tetapi sayang sekali bahawa keseluruhan set kod ini adalah milik orang lain. Jika anda ingin mengubah suai kod, perniagaan akan terjejas, jadi penyelesaian saya adalah untuk menyelesaikan masalah ini dengan mengkonfigurasi tamat masa tanpa mengubah kod sebanyak mungkin.

Penyelesaian

Dari masalah di atas, tamat masa dipengaruhi terutamanya oleh dua faktor:

  • Tetapan tamat masa permintaan gerbang Nginx

  • Tetapan had masa pelaksanaan skrip PHP

Kami menetapkannya mengikut turutan.

Tetapan tamat masa permintaan gerbang Nginx

Nginx menyokong tetapan tamat masa yang sangat halus. Yang utama yang digunakan adalah seperti berikut:

keepalive_timeout

Nginx menggunakan keepalive_timeout untuk menentukan tamat masa KeepAlive. Menentukan tempoh masa maksimum setiap sambungan TCP boleh dikekalkan. Nilai lalai Nginx ialah 75 saat Sesetengah penyemak imbas hanya mengekalkan maksimum 60 saat, jadi ia boleh ditetapkan kepada 60 saat.

fastcgi_connect_timeout

Tamat masa untuk mewujudkan sambungan ke pelayan FastCGI.

fastcgi_send_timeout

Tetapkan tamat masa untuk menghantar permintaan ke pelayan FastCGI. Tetapkan tamat masa hanya antara dua operasi tulis berturut-turut, bukan untuk keseluruhan pemindahan yang diminta. Jika pelayan FastCGI tidak menerima apa-apa dalam masa ini, sambungan ditutup.

fastcgi_read_timeout

Tamat masa untuk membaca respons daripada pelayan FastCGI. Tetapkan tamat masa hanya antara dua operasi baca berturut-turut, bukan untuk pemindahan keseluruhan respons. Jika pelayan FastCGI tidak menghantar apa-apa dalam masa ini, sambungan ditutup.

Memandangkan permintaan untuk melaksanakan skrip PHP adalah lebih berkaitan dengan tiga tetapan terakhir. Jadi hanya tambah tetapan dalam fail konfigurasi Nginx tapak web yang sepadan.

fastcgi_connect_timeout 600s;
fastcgi_send_timeout 600s;
fastcgi_read_timeout 600s;

Tetapan had atas masa pelaksanaan skrip PHP

Masa pelaksanaan skrip PHP dipengaruhi terutamanya oleh dua konfigurasi:

php.ini 中 max_execution_time 和 max_input_time

Lokasi lalai php.ini ialah /usr/local/php/etc/

Ubah suai dua item konfigurasi ini dalam fail konfigurasi php.ini kepada had atas tempoh tamat masa.

max_execution_time = 600
max_input_time = 600
php-fpm.conf 中 request_terminate_timeout
php-fpm.conf 的默认位置在 /usr/local/php/etc/
request_terminate_timeout 也设置为超时时间的上限。
request_terminate_timeout = 600

Selepas pengubahsuaian selesai, mulakan semula Nginx dan php-fpm.

service nginx reload
/etc/init.d/php-fpm reload

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah masa pelaksanaan terlalu lama kaedah php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn