Q:

Setar timeout para função específica

Tenho um script com várias funções.
Gostaria de setar um timeout (tipo set_time_limit) específico para uma função, e se estourar o tempo, ele "desconsiderar" e continuar a execução do loop/script.
Exemplo:
function teste(){
    sleep(10);
}

foreach($array as $v) {
    echo $v;
    teste();
}

Considerando o exemplo, a função teste() irá executar por 10 segundos a cada loop.
Então quero setar um timeout de 3 segundos para a função, e caso "estourar" o tempo, ele descarta, e continua o loop.

Existe essa possibilidade?

A:

A minha curiosidade me levou a esta resposta. Não sei se é a melhor solução, mas funciona. Para fazer o que você quer eu consegui usando execdo php para executar o arquivo que contém a função teste() em plano de fundo. Assim:
$array = [1,2,3,4,5,2,1];

foreach($array as $v) {
    $var = exec('C:\xampp\php\php.exe  '. __DIR__ .'\teste.php '.$v, $saida);
    echo $var;
}

Arquivo teste.php
error_reporting (0);
set_time_limit(3); 
function teste($sec){
    sleep($sec);
    echo "executou > $sec - ";
}
$sec = $argv[1];
teste($sec);

A variável $v é lançada como um argumento para o script que é recuperado em $sec.
Resultado
executou > 1 -executou > 2 -executou > 3 -executou > 2 -executou > 1 -

