【发布时间】:2016-10-29 17:21:23
【问题描述】:
我正在使用 FPM 在 PHP 5.6.26 上开发一个 vagrant box。
我正在测试电池以通过一系列请求访问 REST 端点,以尝试捕获远程端的间歇性错误。在我的电池中,我有一个重复运行次数的变量。因为我不知道每个请求需要多长时间,所以有时大量重复会导致脚本超时,我将无法看到已经运行的请求的结果。
因此,我决定最大化测试运行,而不是指定重复。我监控脚本执行持续了多长时间,并尝试使用ini_get('max_execution_time') 在接近超时时退出。
但是,我注意到使用这种方法,我得到的测试运行次数几乎没有以前那么多。多调试了下,发现可以超过max_execution_time!
我又看了看,发现 PHP-FPM 有自己的超时限制,而当我的脚本快要死的时候,我正在达到这个限制:
[Fri Oct 28 19:41:04.491557 2016] [proxy_fcgi:error] [pid 2343:tid 140619049568000] (70007)The timeout specified has expired: [client 192.168.253.1:52431] AH01075: Error dispatching request to :, referer: http://local.mysite.com/test
所以,知道我想在允许的情况下运行测试,我如何从脚本中的 PHP-FPM 获取实际超时值?
我知道/etc/php-fpm.d/www.conf 中有设置,但我不想在我的脚本中硬编码该值,以防它发生变化。
【问题讨论】:
-
如何监控脚本执行时间(使用哪些函数)?
-
@Zimmi
function remaining() { return ini_get('max_execution_time') - ( time() - $_SERVER['REQUEST_TIME']); }