Как управлять временем выполнения задачи в переполнении стека

У меня есть 2 задачи Задача A и Задача B
Задача A приблизительно время завершения составляет 10 секунд
и то же самое для задачи B означает, что каждая задача имеет некоторый лимит времени
Если задача выполнена в срок, то ок. но если исчерпан лимит времени, его следует приостановить, выполнить второе задание и т. д.

Я просто думаю, что объект задачи должен иметь три метода следующим образом

  1. выполнить: при запуске задачи
  2. onPause: что спасает его прогресс
  3. onResume: когда задача возобновляется, как она должна быть возобновлена.

Так как же мне управлять временем выполнения задачи?

Я думаю о каждом вызове 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();

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();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]