简单地谈谈PHP中的重载操作

简单地谈谈PHP中的重载操作
前言

许多前辈警告我们,重载可以保证整个过程的平稳性。平滑意味着在重新加载过程中,旧进程处理当前请求之前不会终止。直到有一天,当我在重新加载时,有502个错误,这使我不得不重新思考。

你如何重现这个问题让我们编写一个简单的脚本模拟
< PHP

睡眠(11);


>
此时,使用浏览器浏览Web站点,然后立即执行重新加载操作,以查看502错误。

PHP这么弱吗甚至连重载的基本光滑度都不能保证答案当然是否定的。事实上,我们可以通过process_control_timeout参数达到我们的目标。不幸的是,这个参数的默认值是0,这是不是有效的,本文将其设置为10s。以前的实验程序,重新执行,和通常的结果输出这段时间。但是如果你做更多的实验,你可能会发现当加载完成后,睡眠就会立刻过来。这是因为在接收到重新加载后发出的信号后,睡眠会直接返回。让我们重写下面的脚本。
< PHP

睡眠(11);

睡眠(11);
回声;

>
你会发现502个错误又出来了。这是因为虽然重装了先睡觉立即终止,第二睡眠仍然是有效的,且优于process_control_timeout时间限制。如果我们process_control_timeout 12S,那么它的所有权利。

在这个意义上,我们只需要设置process_control_timeout确保加载顺畅合理的价值,但有多大价值太小的话不能起作用,太大的话会有副作用吗让我们重复最后一个问题的实验,但这次我们再加一个监视器:
壳>看n1'ps aux grep php { - } FPM的|
这种监控的目的是观察在加载过程PHP-FPM过程数的变化。为了让效果更明显,建议改变PHP-FPM引导模式为静态模式,并在同一时间,应该有太多的过程。

当我们重复过去的实验中,我们发现,除了执行请求的过程,其他过程的直接破坏,和新的过程并没有立刻开始,所以坚持到最后的老工艺的执行,和新的过程已经完成。在此期间,如果其他的要求来的,它是毫无疑问,它不会立即回应。

根据我们的实验,我们可以得出一个结论:默认情况下,刷新操作PHP-FPM不能保证顺利实施,必须建立一个合理的process_control_timeout也会注意到,它的值不能定得太高,否则系统可能更严重阻塞的请求。

总结

以上是PHP中重载操作的所有内容。我希望这篇文章能帮助你学习工作。如果有任何疑问,你可以留言。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部