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

WBOY
發布: 2016-06-06 20:41:54
原創
942 人瀏覽過

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

<code>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.
}
</code>
登入後複製
登入後複製

回复内容:

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

<code>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.
}
</code>
登入後複製
登入後複製

<code>// 设置闹钟信号处理,抛异常退出循环
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);
}
</code>
登入後複製

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

<code>set_time_limit()
</code>
登入後複製

这一个

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!