403Webshell
Server IP : 172.67.201.108  /  Your IP : 216.73.217.139
Web Server : Apache/2.4.68 (Amazon Linux) OpenSSL/3.5.5
System : Linux ip-172-31-69-123.ec2.internal 6.1.176-223.369.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jul 24 13:34:27 UTC 2026 x86_64
User : ec2-user ( 1000)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/connectionsdev/classes/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/connectionsdev/classes/lib/BatchJob.php
<?php
namespace classes\lib;

use Exception;

class BatchJob {

	protected $job_id;

	public function __construct(int|null $job_id = NULL, int|NULL $reference_id = NULL, string $job_type = '') {
		if (!empty($job_id)) :
			$this->job_id = $job_id;
			return;
		endif;
		global $db;
		try {
			$db->beginTransaction();
			$sql = "
				INSERT INTO batch_jobs SET
				status = 'not_started',
				job_type = " . $db->quote($job_type) . ",
				reference_id = " . nz($reference_id, 'NULL') . ",
				initiated_by = " . nz(trim($_SESSION['user_id']), '0') . "
			";
			$db->query($sql) ;
			$this->job_id = last_id();
			$db->commit();
		} catch(Exception $e) {
			db_err_rollback($e);
		}
	}

	public function get_job_id(): int {
		return $this->job_id;
	}

	public function start($job_name, $args = []): void {
		global $db;
		try {
			$db->beginTransaction();
			$sql = "
				UPDATE batch_jobs SET
				start_time = NOW(),
				status = 'running'
				WHERE id = " . nz($this->job_id, '0') . "
			";
			$db->query($sql) ;
			$db->commit();
		} catch(Exception $e) {
			db_err_rollback($e);
		}
		if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') :
			$nulldev = '> NUL 2>&1 &';
		else :
			$nulldev = '> /dev/null 2>/dev/null &';
		endif;
		$command = 'php ' . APP_ROOT_DIR .  '/batch.php ' . $job_name . ' ' . implode(' ', $args) . ' ' . $nulldev;
		shell_exec($command);
	}

	public function finish($cancel = false): void {
		global $db;
		$status = $cancel ? 'cancelled' : 'completed';
		try {
			$db->beginTransaction();
			$sql = "
				UPDATE batch_jobs SET
				end_time = NOW(),
				status = '{$status}'
				WHERE id = " . nz($this->job_id, '0') . "
			";
			$db->query($sql) ;
			$db->commit();
		} catch(Exception $e) {
			db_err_rollback($e);
		}
	}

	public function append_output($text): void {
		global $db;
		$output = PHP_EOL . $text;
		try {
			$db->beginTransaction();
			$sql = "
				UPDATE batch_jobs SET
				output = CONCAT(COALESCE(output, ''), " . $db->quote($output) . ")
				WHERE id = " . nz($this->job_id, '0') . "
			";
			$db->query($sql) ;
			$db->commit();
		} catch(Exception $e) {
			db_err_rollback($e);
		}
	}

	public function set_total_recs(int $num_recs): void {
		global $db;
		try {
			$db->beginTransaction();
			$sql = "
				UPDATE batch_jobs SET
				total_recs = " . nz($num_recs, '0') . "
				WHERE id = " . nz($this->job_id, '0') . "
			";
			$db->query($sql) ;
			$db->commit();
		} catch(Exception $e) {
			db_err_rollback($e);
		}
	}

	public function set_processed_recs(int $num_recs): void {
		global $db;
		try {
			$db->beginTransaction();
			$sql = "
				UPDATE batch_jobs SET
				processed_recs = " . nz($num_recs, '0') . "
				WHERE id = " . nz($this->job_id, '0') . "
			";
			$db->query($sql) ;
			$db->commit();
		} catch(Exception $e) {
			db_err_rollback($e);
		}
	}

	public function request_cancellation(): void {
		global $db;
		try {
			$db->beginTransaction();
			$sql = "
				UPDATE batch_jobs SET
				cancel_requested = 1,
				cancel_requested_by = " . nz(trim($_SESSION['user_id']), '0') . "
				WHERE id = " . nz($this->job_id, '0') . "
			";
			$db->query($sql) ;
			$db->commit();
		} catch(Exception $e) {
			db_err_rollback($e);
		}
	}

	public function cancel_requested(): bool {
		global $db;
		$sql = "
			SELECT cancel_requested FROM batch_jobs
			WHERE id = " . nz($this->job_id, '0') . "
		";
		$result = $db->query($sql) ;
		if ($result->rowCount() > 0) :
			$row = $result->fetch(\PDO::FETCH_OBJ);
			if ($row->cancel_requested === 1) :
				return true;
			endif;
		endif;
		return false; 
	}

	public function get_output(): string {
		global $db;
		$sql = "
			SELECT output FROM batch_jobs
			WHERE id = " . nz($this->job_id, '0') . "
		";
		$result = $db->query($sql) ;
		$html = '';
		if ($result->rowCount() > 0) :
			$row = $result->fetch(\PDO::FETCH_OBJ);
			$html = $row->output;
		endif;
		return $html; 
	}

}

Youez - 2016 - github.com/yon3zu
LinuXploit