/** * Esegue una ricerca fulltext dei volontari all'interno dei comitati * specificati, se non specificata una query ritorna un elenco. */ public function esegui() { global $db; $inizio = microtime(true); $query = $this->generaQuery(); $offset = max(($this->pagina - 1) * $this->perPagina, 0); $perPagina = (int) $this->perPagina; $numQ = $db->prepare("SELECT COUNT(id) {$query}"); $risQ = $db->prepare("SELECT * {$query} ORDER BY {$this->ordine} LIMIT {$offset}, {$perPagina}"); $numQ->bindValue(':casella', $this->casella); $risQ->bindValue(':casella', $this->casella); $numQ->execute(); $risQ->execute(); $numQ = $numQ->fetch(PDO::FETCH_NUM); $this->totale = (int) $numQ[0]; $pagine = ceil($this->totale / $this->perPagina); if ($pagine == 0) { $pagine = 1; } $this->pagine = $pagine; $r = []; while ($ris = $risQ->fetch(PDO::FETCH_ASSOC)) { $x = new MEmail($ris['id'], $ris); $r[] = $x->toJSON($this->direzione == POSTA_USCITA ? false : $this->casella); } $this->risultati = $r; $fine = microtime(true); $this->tempo = round($fine - $inizio, 6); return true; }
function locked() { return (bool) file_exists(LOCKFILE) && file_get_contents(LOCKFILE); } ignoraTransazione(); // Controlla se ci sono sessioni avviate // e termina ritornando stato 0 (OK) if (locked()) { echo "#{$task}, {$time} ha provato a partire, ma ha trovato un file di lock.\n"; exit(0); } echo "#{$task}, {$time} sta partendo, ha creato un file di lock.\n"; // Imposta flag di esecuzione (non voglio) lock(); // Ottieni cursore alle prossime email da inviare $coda = MEmail::inCoda($conf['batch_size']); $ok = true; // Per ogni comunicazione in copia foreach ($coda as $_comunicazione) { // 10 minuti per botta! set_time_limit(600); $time = date('d-m-Y H:i:s'); try { // Tenta l'invio della comunicazione if (!($stato = (int) $_comunicazione->invia(function () use($cache, $task, $time, $_comunicazione) { echo "#{$task}, {$time} inviato un messaggio per {$_comunicazione}\n"; }))) { echo "#{$task}, {$time}: Invio non riuscito," . " comunicazione {$_comunicazione}" . " (stato {$stato})\n"; } } catch (Errore $e) { echo "#{$task}, {$time}: Errore: {$e->messaggio}\n";