У меня есть 2 задачи Задача A и Задача B
Задача A приблизительно время завершения составляет 10 секунд
и то же самое для задачи B означает, что каждая задача имеет некоторый лимит времени
Если задача выполнена в срок, то ок. но если исчерпан лимит времени, его следует приостановить, выполнить второе задание и т. д.
Я просто думаю, что объект задачи должен иметь три метода следующим образом
Так как же мне управлять временем выполнения задачи?
Я думаю о каждом вызове 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();
<?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();
Других решений пока нет …