Ich würde ein extra Script machen das im Cronjob läuft und Alle 5 Minuten folgendes prüft. Das Script hier soll als Anregung dienen. Es ist weder geprüft, noch ausprobiert. Wer es benutzten möchte muss auf jedenfall Tippfehler prüfen, Evtl Logging einbauen (damit ihr herausfinden könnt warum es zur SMS Flut kommt etc, Anbindung ans SMS Gateway u.s.w. Ich hänge das Script nochmal sauber als Attachment dran. tactive || $T->tpause || !$T->c_contests) continue; // Lade Turniermodus (wird zur Benennung des Rundennamen benötigt $TS = $T->get_system(); // Lade Teilnehmerdaten $T->load_players_info(); $T->load_players_members(); // Suche alle offene Spiele $allmatches = $DB->query_all(" SELECT tcid, team_a, team_b, wins_a, wins_b, won, tcrunde, row, UNIX_TIMESTAMP(starttime) AS starttime, UNIX_TIMESTAMP(starttime)+troundtime*60 AS endtime FROM t_contest LEFT JOIN t_turnier ON t_turnier.tid=t_contest.tid WHERE t_contest.tid=".intval($T->tid)." AND won=0 AND team_a>0 AND team_b>0 ORDER by starttime ASC, tcrunde DESC, row ASC "); // wenn keine Offenen Spiele vorhanden sind, gehe weiter if(!is_array($allmatches) || !count($allmatches)) continue; // Selektiere (maximal 1 Spiel pro Team) $active_matches = array(); $already_shown = array(); foreach($allmatches AS $nr => $data) { if(!in_array($data['team_a'],$already_shown) && !in_array($data['team_b'],$already_shown)) $active_matches[] = $data; $already_shown[] = $data['team_a']; $already_shown[] = $data['team_b']; } // Lade Liste der bereits rausgeschickten Notis $already_notified = $DB->query_all("SELECT tcid FROM sms_send WHERE tid=".intval($T->tid),'tcid','tcid'); if(!is_array($already_notified)) $already_notified = array(); // Aktive matches benachrichten foreach($active_matches AS $data) { if(in_array($data['tcid'],$already_notified)); continue; // Begegnungsdaten $tname = $T->tname; $name_a = $T->playerinfo[$data['team_a']]['name']; $name_b = $T->playerinfo[$data['team_b']]['name']; $runde = $TS->get_round($data['tcrunde'].".".$data['row']); // Alle Teilnehmer benachrichten foreach(array($data['team_a'],$data['team_b']) AS $tnid) { foreach($T->playermembers[$tnid] AS $user_id => $data) { $nick = $data['nick']; $nr = $DB->query_one("SELECT handy FROM user WHERE id=".intval($user_id)); $nr = preg_replace("/^+/","00",$nr); $nr = preg_replace("/[^0-9]/","",$nr); // Nur wenn Nummer vorhanden ist und Rufnummern Pruefung auf Deutsche Handy Nr if($nr && preg_match("/^(0049|0)1[567]/",$nr)) { $sms[] = array( 'tcid' => $data['tcid'], 'tid' => $T->tid, 'uid' => $user_id, 'nr' => $nr, 'msg' => "Hallo ".$nick.". Deine nächstes Match: ". $tname.": ".$runde.": ".$name_a." vs ".$name_b." Zeit: ". strftime("%H:%M",$data['starttime'])."-".strftime("%H:%M",$data['endtime']). " - ".$global['sitename'] ); } } } } } // Verschicke SMS Nachrichten if(count($sms)) { foreach($sms AS $data) { // Call programm to send sms message exec("/usr/local/bin/sendsms ".$data['nr']." \"".escapeshellcmd($data['msg'])."\""); // Safe msg for history and spam prevention $DB->query(" REPLACE INTO send_sms (tid,tcid,user_id,nr,msg,send) VALUES (".intval($data['tid']).",".intval($data['tcid']).", '".addslashes($data['nr'])."','".addslashes($data['msg'])."',NOW())"); } } ?> SELECT tcid FROM t_contests WHERE team_a>0 AND team_b>0 AND won=0 WHERE tid IN (1,4,6,18) ORDER by