Max execution time margin for OpportunisticQM
I guess it could continue a bit too long in case it got a really long (failing, timeouting) HTTP request just before max_execution_time hit.
This commit is contained in:
parent
94392ab00c
commit
e7308b0ecb
@ -18,12 +18,13 @@ class OpportunisticQueueManager extends DBQueueManager
|
|||||||
{
|
{
|
||||||
protected $qmkey = false;
|
protected $qmkey = false;
|
||||||
protected $max_execution_time = null;
|
protected $max_execution_time = null;
|
||||||
|
protected $max_execution_margin = null; // margin to execution time, including timeouts etc.
|
||||||
protected $max_queue_items = null;
|
protected $max_queue_items = null;
|
||||||
|
|
||||||
protected $started_at = null;
|
protected $started_at = null;
|
||||||
protected $handled_items = 0;
|
protected $handled_items = 0;
|
||||||
|
|
||||||
const MAXEXECTIME = 30; // typically just used for the /main/cron action
|
const MAXEXECTIME = 10; // typically just used for the /main/cron action, only used if php.ini max_execution_time is 0
|
||||||
|
|
||||||
public function __construct(array $args=array()) {
|
public function __construct(array $args=array()) {
|
||||||
foreach (get_class_vars(get_class($this)) as $key=>$val) {
|
foreach (get_class_vars(get_class($this)) as $key=>$val) {
|
||||||
@ -41,6 +42,10 @@ class OpportunisticQueueManager extends DBQueueManager
|
|||||||
$this->max_execution_time = ini_get('max_execution_time') ?: self::MAXEXECTIME;
|
$this->max_execution_time = ini_get('max_execution_time') ?: self::MAXEXECTIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->max_execution_margin === null) {
|
||||||
|
$this->max_execution_margin = 10; // should be calculated from our default timeouts for http requests etc.
|
||||||
|
}
|
||||||
|
|
||||||
return parent::__construct();
|
return parent::__construct();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +65,7 @@ class OpportunisticQueueManager extends DBQueueManager
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// If too much time has passed, stop
|
// If too much time has passed, stop
|
||||||
if ($time_passed >= $this->max_execution_time) {
|
if ($time_passed >= $this->max_execution_time - $this->max_execution_margin) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// If we have a max-item-limit, check if it has been passed
|
// If we have a max-item-limit, check if it has been passed
|
||||||
|
Loading…
Reference in New Issue
Block a user