$cmd .= " >> {$log} 2>&1 & echo \$!"; // if($debug) echo "dbg: ejecutando comando:\n$cmd\n"; $pid = trim(shell_exec($cmd)); $pids[$pid] = $user->id; if ($debug) { echo "Proceso lanzado con el PID {$pid} para el envio a {$user->email}\n"; } } //Espera a que acaben los procesos de envio antes de continuar do { //espera un segundo sleep(1); $check_processes = false; $processing = array(); foreach ($pids as $pid => $user_id) { if (check_pid($user_id, $pid)) { $processing[] = $pid; $check_processes = true; //hay un proceso activo, habra que esperar } } if ($processing) { echo "PIDs " . implode(",", $processing) . " en proceso, esperamos...\n"; } } while ($check_processes); $process_time = microtime(true) - $stime; $current_rate = round($j / $process_time, 2); //No hace falta incrementar la quota de envio pues ya se hace en Mail::Send() //$rest = Mail::checkLimit(null, true, $LIMIT); if ($debug) { echo "Quota de envío restante para hoy: {$rest} emails, Quota diaria para mailing: " . GOTEO_MAIL_SENDER_QUOTA . "\n";
} $f = @fopen($config['lock_file'], 'r'); //lock file found if ($f) { flock($f, LOCK_SH); $pid = trim(fgets($f)); if (posix_getsid($pid)) { die('hellaVCR is already running! (pid ' . $pid . ' from ' . $config['lock_file'] . ")\n"); } fclose($f); } //write pid file $f = fopen($config['lock_file'], 'w'); flock($f, LOCK_EX); fwrite($f, posix_getpid() . "\n"); fclose($f); $config['pid_files'][] = $config['lock_file']; } // function send_prowl($event, $description) { global $config, $prowl; $prowl->push(array('application' => 'hellaVCR', 'event' => $event, 'description' => $description, 'priority' => $config['prowl_priority']), true); return $prowl->getError(); } ##### main call if (empty($hellavcr_include)) { register_shutdown_function('clean_pid'); check_pid(); process_tv(); }