2015-03-02 3 views
0

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

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

  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

ваши задачи являются функциями? Можете ли вы поместить код sudo –

+0

Мы будем выполнять задачи как объект – siddhesh

+0

raheel khan Я поставил свой объект задачи abstract class – siddhesh

ответ

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

Установленный предел времени будет установлен время для этой функции запуска или полного скрипта? – siddhesh

+0

Да, это неправильно. Я работаю над этим :) –

+0

ok Спасибо за ваши усилия – siddhesh

Смежные вопросы