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"; }