如何在PHP中管理任务执行时间

时间:2015-03-02 07:52:26

标签: php time multitasking

我有2个任务任务A和任务B. 任务A大约完成时间是10秒  任务B的相同意味着每个任务都有一些时间限制 IF任务在时间限制内完成然后确定。但是如果耗尽时间限制则应该暂停并且应该执行第二项任务等等。

我只是认为任务对象应该有以下三种方法

  1. 运行:启动任务时
  2. onPause:保存进度
  3. onResume:当任务恢复时应该如何恢复。
  4. 那么我应该如何管理任务的时间?

    我正在考虑每次onPause调用我们计算估计的时间,如果时间用完,那么我们将开始下一个任务,但它有一些问题所以我想知道更好的方法将这个功能添加到我的项目 提前谢谢。

    abstract class Task_Worker
    {
    protected $task;
    public   $conn;
    public $status;
    public $action;
    public $id;
    public $pause_info;
    public $start_time;
    public $script_time;
    
    public function __construct($task,$mysqli)
    {   
        $this->start_time = microtime();
        $this->task = $task;
        $this->status = $task['task_status'];
        $this->action = $task['task_action'];
        $this->id = $task['task_id'];
        $this->run();
    }
    public function response($response)
    {
        update("task_response='$response'","task_id=$task[id]");
    }
    
    public function onPause()
    {
        $string = $this->pause_info;
        update("task_pause='$string'", "task_id=$task[id]");
    }
    
    // to be implemented for every task class
    abstract protected function onResume();
    abstract protected function run();
    

1 个答案:

答案 0 :(得分:0)

<?php

function run()
{       
    $timeFinish = microtime(true) + 30;
    try
    {

        while(true)
        {
            checkTimeOut($timeFinish);
        }

    }
    catch(Exception $e)
    {
        echo $e-getMessage();
    }   
}


function checkTimeOut($timeFinish)
{
    if(microtime(true) > $timeFinish)
        die('Timeout');

    return true;
}

run();