File "ActionScheduler_FatalErrorMonitor.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/packages/action-scheduler/classes/ActionScheduler_FatalErrorMonitor.php
File
size: 2.03 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
class ActionScheduler_FatalErrorMonitor
{
private $claim = NULL;
private $store = NULL;
private $action_id = 0;
public function __construct(ActionScheduler_Store $store)
{
$this->store = $store;
}
public function attach(ActionScheduler_ActionClaim $claim)
{
$this->claim = $claim;
add_action('shutdown', array($this, 'handle_unexpected_shutdown'));
add_action('action_scheduler_before_execute', array($this, 'track_current_action'), 0, 1);
add_action('action_scheduler_after_execute', array($this, 'untrack_action'), 0, 0);
add_action('action_scheduler_execution_ignored', array($this, 'untrack_action'), 0, 0);
add_action('action_scheduler_failed_execution', array($this, 'untrack_action'), 0, 0);
}
public function detach()
{
$this->claim = NULL;
$this->untrack_action();
remove_action('shutdown', array($this, 'handle_unexpected_shutdown'));
remove_action('action_scheduler_before_execute', array($this, 'track_current_action'), 0);
remove_action('action_scheduler_after_execute', array($this, 'untrack_action'), 0);
remove_action('action_scheduler_execution_ignored', array($this, 'untrack_action'), 0);
remove_action('action_scheduler_failed_execution', array($this, 'untrack_action'), 0);
}
public function track_current_action($action_id)
{
$this->action_id = $action_id;
}
public function untrack_action()
{
$this->action_id = 0;
}
public function handle_unexpected_shutdown()
{
if ($error = error_get_last()) {
if (in_array($error['type'], array(E_ERROR, E_PARSE, E_COMPILE_ERROR, E_USER_ERROR, E_RECOVERABLE_ERROR))) {
if (!empty($this->action_id)) {
$this->store->mark_failure($this->action_id);
do_action('action_scheduler_unexpected_shutdown', $this->action_id, $error);
}
}
$this->store->release_claim($this->claim);
}
}
}