1--TEST--
2FPM: Process manager config pm.process_idle_timeout
3--SKIPIF--
4<?php
5include "skipif.inc";
6if (!getenv("FPM_RUN_RESOURCE_HEAVY_TESTS")) die("skip resource heavy test");
7if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
8?>
9--FILE--
10<?php
11
12require_once "tester.inc";
13
14$cfg = <<<EOT
15[global]
16error_log = {{FILE:LOG}}
17[unconfined]
18listen = {{ADDR}}
19pm = ondemand
20pm.max_children = 3
21pm.process_idle_timeout = 1
22pm.status_path = /status
23EOT;
24
25$code = <<<EOT
26<?php
27usleep(300000);
28EOT;
29
30$tester = new FPM\Tester($cfg, $code);
31$tester->start();
32$tester->expectLogStartNotices();
33$tester->multiRequest(2, readTimeout: 7000);
34$tester->status([
35    'total processes' => 2,
36]);
37// wait for process idle timeout
38sleep(5);
39$tester->status([
40    'total processes' => 1,
41]);
42$tester->terminate();
43$tester->expectLogTerminatingNotices();
44$tester->close();
45
46?>
47Done
48--EXPECT--
49Done
50--CLEAN--
51<?php
52require_once "tester.inc";
53FPM\Tester::clean();
54?>
55