以下のようなエンドポイントを作って叩いてみたところ

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内で時間がかかった場合に途中で打ち切ってエラーを返すことってできないんでしょうか