对于PHP-FPM参数的理解
process_control_timeout
英文解释
process_control_timeout mixedTime limit for child processes to wait for a reaction on signals from master. Available units: s(econds), m(inutes), h(ours), or d(ays) Default Unit: seconds. Default value: 0.
中文解释
process_control_timeout mixed 设置子进程接受主进程复用信号的超时时间。可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。默认值:0(关闭)。
中文翻译有个不恰当的地方,英文解释里并没有指明该信号是复用信号。
我的理解:
处理请求
原则上,php-fpm
会选择空闲的fastcgi
进程去处理请求,在处理之前,php-fpm会给fastcgi发送信号,用来让fastcgi进程准备好接受请求处理。但是fastcgi进程并不总是能够处理请求,也就是不能总是响应该信号(比如出现假死的情况),这时候就需要设定php-fpm留给fastcgi进程响应信号的时间,如果超时了,php-fpm会想其他办法(例如选择其他fastcgi
进程),这个就process_control_timeout
参数的作用。
php-fpm
进行reload
process_control_timeout
= 10
<?php sleep(50);echo 1;sleep(20); //没有这个sleep,reload会立即生效echo 2;
当浏览器访问http://localhost
时,进行php-fpm
平滑reload
,fastcgi信号收到关闭进程信号后,第一个sleep函数会直接返回,但是第二个sleep仍在执行。因此,php-fpm会被这一个旧fastcgi进程卡10s,超过后才能完成平滑重启
request_terminate_timeout
在php-fpm.conf
文件中的描述如下:
; The timeout for serving a single request after which the worker process will ; be killed. This option should be used when the 'max_execution_time' ini option ; does not stop script execution for some reason. A value of '0' means 'off'. ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) ; Default Value: 0 ;request_terminate_timeout = 0
翻译过来就是:request_terminate_timeout
参数设置了处理单个请求的超时时间,过了之后,该worker进程就会被kill掉。这个选项应该在php.ini文件的max_execution_time
选项由于某种原因没有停止脚本的运行下使用。默认值为0,表示该选项为关闭状态。
正如上面所说,request_terminate_timeout
设定的是请求的超时时间,而php.ini配置中的max_execution_time
根据手册如下的解释,是脚本被允许的最大执行时间。
max_execution_time integer 这设置了脚本被解析器中止之前允许的最大执行时间,单位秒。 这有助于防止写得不好的脚本占尽服务器资源。 默认设置为 30。 从命令行运行 PHP 时,默认设置为 0。 最大执行时间不会影响系统调用和系统操作等。更多细节参见 set_time_limit()。 在 安全模式 下你不能通过 ini_set() 来修改此设置。 唯一的解决方法是关闭安全模式或者在 php.ini中修改时间限制。 你的 web 服务器也可以有其他超时设置,也有可能中断 PHP 的执行。 Apache 有一个 Timeout 指令,IIS 有一个 CGI 超时功能。 他们默认都是 300 秒。更多具体信息参见你的 web 服务器的文档。
区别如下:
超时后,request_terminate_timeout
会返回502Bad Gateway了,而max_execution_time
会抛出Fatal Error
。
max_execution_time不包括诸如使用system()
,sleep()
的系统调用、流操作、数据库操作等的时间,所以比较鸡肋,而request_terminate_timeout会包含程序的完整请求时间。
另外,开启request_terminate_timeout并不会让max_execution_time失效,先到达谁的超时时间谁起作用。
更过相关PHP问题请访问PHP中文网:https://www.php.cn/
Atas ialah kandungan terperinci 对于PHP-FPM参数的理解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Kaedah untuk menyelesaikan masalah kegagalan permulaan PHP7-FPM dalam persekitaran Linux Apabila menggunakan pelayan Linux untuk membina tapak web atau aplikasi, PHP7-FPM ialah pengurus proses PHPFastCGI yang biasa digunakan. Walau bagaimanapun, kadangkala anda menghadapi masalah bahawa PHP7-FPM gagal dimulakan, yang mungkin menyebabkan tapak web tidak dapat diakses secara normal. Dalam artikel ini, kami akan membincangkan beberapa penyelesaian biasa dan memberikan contoh kod khusus. Saya harap maklumat ini dapat membantu anda menyelesaikan masalah kegagalan permulaan PHP7-FPM dengan cepat. meneliti

Untuk menyelesaikan masalah kekurangan PHP-FPM dalam Ubuntu, contoh kod khusus diperlukan Dalam sistem Ubuntu, memasang dan mengkonfigurasi PHP-FPM adalah operasi biasa, tetapi kadangkala masalah kehilangan PHP-FPM berlaku semasa proses pemasangan. Artikel ini memperincikan cara menyelesaikan masalah ini dan menyediakan contoh kod khusus untuk membantu anda menyelesaikan pemasangan dan konfigurasi. 1. Semak sama ada PHP-FPM telah dipasang Mula-mula, gunakan arahan berikut untuk menyemak sama ada PHP-FPM telah dipasang dalam sistem: dpkg-l|gr

PHP7-FPM di bawah Linux ialah pengurus proses PHPFastCGI biasa, yang biasanya digunakan untuk mengendalikan program PHP. Walau bagaimanapun, kadangkala semasa proses konfigurasi atau penggunaan, anda mungkin menghadapi situasi di mana PHP7-FPM gagal dimulakan, menyebabkan tapak web tidak dapat diakses secara normal. Dalam kes ini, kita perlu mengambil beberapa langkah untuk menangani dan menyelesaikan masalah tersebut. 1. Semak log ralat dahulu semak log ralat PHP7-FPM Biasanya log ralat terletak di /var/log/php7-fpm.

Graceful restart GR ialah singkatan dari Graceful Restart Ia adalah satu mekanisme untuk memastikan perkhidmatan pemajuan tidak terganggu apabila protokol dimulakan semula. Teras mekanisme GR ialah apabila peranti memulakan semula protokol, ia boleh memberitahu peranti sekelilingnya untuk mengekalkan hubungan jiran yang stabil dan laluan ke peranti dalam tempoh masa tertentu. Selepas protokol dimulakan semula, peranti persisian membantunya menyegerakkan maklumat (termasuk pelbagai topologi, penghalaan dan maklumat sesi yang diselenggarakan oleh penghalaan/protokol berkaitan MPLS yang menyokong GR), memulihkan peranti kepada keadaan sebelum dimulakan semula dalam masa yang sesingkat mungkin. negeri. Tiada laluan mengepak semasa keseluruhan proses mulakan semula protokol, dan tidak akan ada perubahan dalam laluan pemajuan paket Keseluruhan sistem boleh memajukan data tanpa gangguan. Proses ini dipanggil permulaan semula yang lancar.

Untuk salah satu projek web kami, disebabkan peningkatan dalam bandar baharu, bilangan lawatan telah meningkat dan tekanan terhadap DB telah meningkat Sebagai pihak perniagaan yang menyediakan antara muka, sejumlah besar permintaan "502" telah dilaporkan baru-baru ini melalui maklum balas hiliran. 502, badgateway, biasanya ralat di hulu (ini adalah PHP, sebab biasa 502 ialah pelaksanaan skrip melebihi masa tetapan tamat masa, atau tetapan tamat masa terlalu besar, mengakibatkan proses PHP tidak menjadi). dikeluarkan untuk masa yang lama, dan tidak ada pekerja terbiar untuk mengambil tetamu. Projek kami disebabkan oleh tetapan masa pelaksanaan PHP yang terlalu singkat Dalam kes ini, anda boleh terlebih dahulu meningkatkan masa pelaksanaan PHP dengan sewajarnya dan memastikan bahawa 502 dikosongkan terlebih dahulu.

Apabila menyelesaikan cabaran kehilangan PHP-FPM dalam sistem Ubuntu anda, anda perlu mengikuti satu siri langkah untuk memasang dan mengkonfigurasi PHP-FPM. PHP-FPM (FastCGIProcessManager) ialah pengurus proses yang mengendalikan permintaan halaman dinamik dan boleh meningkatkan prestasi dan kestabilan aplikasi PHP. Butiran berikut cara memasang dan mengkonfigurasi PHP-FPM pada sistem Ubuntu dan menyediakan contoh kod khusus untuk membantu menyelesaikan cabaran ini. Langkah 1: Pengemaskinian sistem sedang dijalankan

nginx berbeza daripada apache Dalam apache, anda boleh menentukan log ralat php secara langsung, supaya maklumat ralat semasa pelaksanaan php dimasukkan terus ke dalam log ralat php, yang boleh ditanya dengan mudah. Dalam nginx, perkara menjadi seperti ini: nginx hanya merekodkan log akses untuk lawatan halaman. Tidak akan ada maklumat log ralat php. nginx menghantar permintaan untuk php ke proses php-fpmfastcgi untuk pemprosesan php-fpm lalai hanya akan mengeluarkan mesej ralat php-fpm, dan log ralat php tidak dapat dilihat dalam log ralat php-fpm. Sebabnya ialah fail konfigurasi php php-fpm

Ia adalah amalan biasa untuk menggunakan PHP7-FPM sebagai persekitaran berjalan skrip sebelah pelayan pada pelayan Linux, tetapi kadangkala anda mungkin menghadapi pengecualian permulaan. Artikel ini akan memperkenalkan beberapa teknik untuk menangani pengecualian permulaan PHP7-FPM dan menyediakan beberapa contoh kod khusus untuk membantu pembaca menyelesaikan masalah dengan lebih baik. 1. Semak fail konfigurasi. Fail konfigurasi PHP7-FPM biasanya terletak dalam direktori /etc/php/7.x/fpm/pool.d/ untuk memastikan bahawa konfigurasi dalam fail konfigurasi adalah betul. Boleh membuat
