recherche

Maison  >  Questions et réponses  >  le corps du texte

超时 - PHP 是否可以限制函数执行时间?

PHP 是否可以限制函数执行时间,以使下列伪代码的功能得以实现?

foreach ($jobs as $job) {
    try {
        run($job);
    } catch (TimeoutException $e) {
        printf("Timeout: %s\n", $e->getMessage());
        continue;
    }
}

function run($job) {
    // ssh, HTTP request, Connect DB etc.
}
PHP中文网PHP中文网2840 Il y a quelques jours319

répondre à tous(3)je répondrai

  • 大家讲道理

    大家讲道理2017-04-10 15:06:38

    // 设置闹钟信号处理,抛异常退出循环
    declare(ticks = 1);
    pcntl_signal(SIGALRM, function(){throw new Exception('process_timeout');});
    
    // 设置闹钟,5秒超时
    pcntl_alarm(5);
    
    $jobs = array_fill(0, 1000, 'job');
    foreach ($jobs as $job) {
        try {
            run($job);
        } catch (Exception $e) {
            printf("Timeout: %s\n", $e->getMessage());
            exit;
        }
    }
    
    function run($job) {
        // ssh, HTTP request, Connect DB etc.
        sleep(1);
    }
    

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:06:38

    推荐你一个框架swooole
    看你代码就是要处理一个花费时间比较长的任务
    swoole里的task,提交过去一个任务,立即返回,任务在后台自动运行,不用关注运行时间
    设置了 set_time_limit() 会使任务无法完成

    répondre
    0
  • PHPz

    PHPz2017-04-10 15:06:38

    set_time_limit()
    

    这一个

    répondre
    0
  • Annulerrépondre