89 lines
2.6 KiB
PHP
89 lines
2.6 KiB
PHP
<?php
|
|
// filename: /www/wwwroot/bilspro/load/check_voucher_all/load_multi_cek.php
|
|
|
|
ini_set('display_errors', 1);
|
|
error_reporting(E_ALL);
|
|
|
|
if (php_sapi_name() !== 'cli') {
|
|
exit("CLI only\n");
|
|
}
|
|
|
|
// ============================
|
|
// LOCK BIAR GAK DOUBLE CRON
|
|
// ============================
|
|
$lockFile = '/tmp/load_multi_cek.lock';
|
|
|
|
if (file_exists($lockFile)) {
|
|
$pid = (int)file_get_contents($lockFile);
|
|
if ($pid && posix_kill($pid, 0)) {
|
|
exit("Masih running PID $pid\n");
|
|
}
|
|
}
|
|
file_put_contents($lockFile, getmypid());
|
|
|
|
register_shutdown_function(function () use ($lockFile) {
|
|
@unlink($lockFile);
|
|
});
|
|
|
|
include "/www/wwwroot/bilspro/config/connect.php";
|
|
|
|
$max_process = 5;
|
|
|
|
try {
|
|
|
|
$query = "SELECT nama, ip_address, username, password, port_api, id_setting_mikrotik
|
|
FROM v_load_api_cek_voucher";
|
|
|
|
$set1 = $pdo->query($query);
|
|
|
|
if ($set1 && $set1->rowCount() > 0) {
|
|
|
|
while ($pset = $set1->fetch(PDO::FETCH_ASSOC)) {
|
|
|
|
// ============================
|
|
// LIMIT PROCESS REAL
|
|
// ============================
|
|
while (true) {
|
|
$running = (int)shell_exec("/usr/bin/pgrep -fc check_voucher.php");
|
|
if ($running < $max_process) break;
|
|
sleep(1);
|
|
}
|
|
|
|
// ============================
|
|
// PARAMETER AMAN
|
|
// ============================
|
|
$m_ip = escapeshellarg($pset['ip_address']);
|
|
$m_user = escapeshellarg($pset['username']);
|
|
$m_pass = escapeshellarg($pset['password']);
|
|
$m_port = escapeshellarg($pset['port_api']);
|
|
$idsm = escapeshellarg($pset['id_setting_mikrotik']);
|
|
$nama = escapeshellarg($pset['nama']);
|
|
|
|
// ============================
|
|
// COMMAND FIX (NO MULTILINE)
|
|
// ============================
|
|
$command = "/usr/bin/php /www/wwwroot/bilspro/load/check_voucher_all/check_voucher.php "
|
|
. "{$m_ip} {$m_user} {$m_pass} {$m_port} {$idsm} {$nama} "
|
|
. ">> /www/wwwroot/bilspro/load/check_voucher_all/log_worker.log 2>&1 &";
|
|
|
|
exec($command);
|
|
|
|
echo "[" . date('Y-m-d H:i:s') . "] Start: {$pset['ip_address']} - {$pset['nama']}\n";
|
|
|
|
usleep(200000);
|
|
}
|
|
|
|
echo "[" . date('Y-m-d H:i:s') . "] Semua process dimulai\n";
|
|
|
|
} else {
|
|
|
|
$stmt = $pdo->prepare("UPDATE ganerate_voucher SET status_cek = NULL WHERE status_cek = '1'");
|
|
$stmt->execute();
|
|
|
|
echo "Reset status_cek selesai\n";
|
|
}
|
|
|
|
} catch (PDOException $e) {
|
|
echo "Database Error: " . $e->getMessage() . "\n";
|
|
}
|