Apache + Fuel PHP でタイムアウトの挙動
以下のようなエンドポイントを作って叩いてみたところ
public function get_timeout() {
Log::error(ini_get('max_execution_time'));
set_time_limit(10);
Log::error(ini_get('max_execution_time'));
sleep(60);
return $this->response('ok', 200);
}
ログには
ERROR - 2019-10-12 03:10:47 --> 30
ERROR - 2019-10-12 03:10:47 --> 10
とでて max_execution_time は変更されてるんですが
time curl http://localhost/api/test/timeout
curl http://localhost/api/test/timeout 0.01s user 0.01s system 0% cpu 1:00.15 total
となって1分たつまで結果が帰ってきません
次に curl を途中で Ctrl+Cで終了したところ
サーバー側では 60 秒たってから httpd のログに 200 扱いで記録されます
Apache の設定では
Timeout 10
となってるんですがいずれも反映されてないように見えます
PHP内で時間がかかった場合に途中で打ち切ってエラーを返すことってできないんでしょうか