逾時 - PHP 是否可以限制函數執行時間?

來源:互聯網
上載者:User
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 是否可以限制函數執行時間,以使下列虛擬碼的功能得以實現?

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.}

// 設定鬧鐘訊號處理,拋異常退出迴圈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);}

推薦你一個架構swooole
看你代碼就是要處理一個花費時間比較長的任務
swoole裡的task,提交過去一個任務,立即返回,任務在後台自動運行,不用關注已耗用時間
設定了 set_time_limit() 會使任務無法完成

set_time_limit()

這一個

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.