query($query); if ($set1 && $set1->rowCount() > 0) { while ($pset = $set1->fetch(PDO::FETCH_ASSOC)) { // Batasi jumlah proses while ($running >= $max_process) { sleep(1); $running--; } $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']); // LOG PER WORKER $command = "php /www/wwwroot/bilspro/load/check_voucher.php {$m_ip} {$m_user} {$m_pass} {$m_port} {$idsm} {$nama} >> /www/wwwroot/bilspro/load/log_worker.log 2>&1 &"; exec($command); echo "Start: {$pset['ip_address']} - {$pset['nama']}\n"; $running++; usleep(200000); // delay biar gak brutal } echo "Semua process dimulai => " . date('Y-m-d H:i:s') . "\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"; }