Hallo Coder,
ich stehe mal wieder vor einem Problem.
Ein Kunde hat eine MySql-Datenbank mit ca. 5.000 Mitgliedern. Nun möchte er über einen HTTP-Request (an ein SMS-Gateway) eine SMS an alle versenden.
Hierbei stellte sich schnell heraus, dass die Scriptlaufzeit von 90 Sec schnell überschritten war. Die Scriptlaufzeit ist vom Provider fest begrenzt und läst sich nicht abschalten (auf 0 Sec).
Dann dachte ich, ich könnte das Problem mit Ajax umgehen, in dem ich die Gateway-Requests einzeln per Ajax aufrufe und somit die Scriptlaufzeit nicht überschreite. (Evtl. liegt hier schon mein denkfehler?)
Leider hat das auch nichts gebracht. nach ca. 80 Datensätze pasiert nichts mehr.
Hat sich von euch schon mal jemand mit diesem Thema befasst? Kann mir vielleicht jemand weiterhelfen?
Hier mal mein Script (Snippet):
Alles anzeigen
Alles anzeigen
hier die Datei welche per Ajax aufgerufen wird:
Alles anzeigen
Schon mal Danke an alle die sich gedanken darüber machen.
Grüße KMD
ich stehe mal wieder vor einem Problem.
Ein Kunde hat eine MySql-Datenbank mit ca. 5.000 Mitgliedern. Nun möchte er über einen HTTP-Request (an ein SMS-Gateway) eine SMS an alle versenden.
Hierbei stellte sich schnell heraus, dass die Scriptlaufzeit von 90 Sec schnell überschritten war. Die Scriptlaufzeit ist vom Provider fest begrenzt und läst sich nicht abschalten (auf 0 Sec).
Dann dachte ich, ich könnte das Problem mit Ajax umgehen, in dem ich die Gateway-Requests einzeln per Ajax aufrufe und somit die Scriptlaufzeit nicht überschreite. (Evtl. liegt hier schon mein denkfehler?)
Leider hat das auch nichts gebracht. nach ca. 80 Datensätze pasiert nichts mehr.
Hat sich von euch schon mal jemand mit diesem Thema befasst? Kann mir vielleicht jemand weiterhelfen?
Hier mal mein Script (Snippet):
Quellcode
- <script type="text/javascript">
- <!--
- function sendRequest(encoded_message,datensatz_telefon,cnt)
- {
- var req;
- try
- {
- req = window.XMLHttpRequest?new XMLHttpRequest():
- new ActiveXObject("Microsoft.XMLHTTP");
- }
- catch (e)
- {
- // Kein AJAX-Support
- }
- req.onreadystatechange = function()
- {
- if ((req.readyState == 4) && (req.status == 200))
- {
- document.getElementById('inhalt'+cnt).innerHTML = req.responseText;
- }
- }
- req.open('post', 'ajax-sms2.php');
- req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
- req.send('encoded_message='+encoded_message+'&datensatz_telefon='+datensatz_telefon);
- }
- //-->
- </script>
Quellcode
- <?php
- // MySql-Datenbank öffnen
- $verbindung = @mysql_connect($mysql_server,$mysql_user,$mysql_passwort) or die("Keine Verbindung zur Datenbank möglich");
- mysql_select_db($mysql_db_name) or die("Die Datenbank existiert nicht");
- // Startwert für numerische Auflistung
- $cnt = "1";
- // Daten aus MySql-Datenbank holen...
- $abfrage = mysql_query("SELECT telefon FROM ".$mysql_table_mitglieder." WHERE telefon != '' ORDER BY id ASC");
- while($row = mysql_fetch_object($abfrage))
- {
- $datensatz_telefon = $row->telefon;
- ?>
- Telefon: <?php echo $datensatz_telefon; ?> | Status: <span id="inhalt<?php echo $cnt; ?>"></span>
- <script type="text/javascript">sendRequest('<?php echo $encoded_message; ?>', '<?php echo $datensatz_telefon; ?>', '<?php echo $cnt; ?>')</script><br>
- <?php
- $cnt++;
- }
- // Datenbank-Verbindung schließen
- mysql_close($verbindung) or die("Die Datenbank-Verbindung konnte nicht beendet werden");
- ?>
hier die Datei welche per Ajax aufgerufen wird:
Quellcode
- <?php
- // Funktion für den SMS-Versand
- function getURLfopen($url)
- {
- $dh = fopen ($url, "r");
- $result = fread($dh,128);
- fclose($dh);
- return $result;
- }
- // Variablen per POST holen
- $encoded_message = $_POST['encoded_message'];
- $datensatz_telefon = $_POST['datensatz_telefon'];
- // HTTP-Request
- getURLfopen("http://gateway.xxxxxxxxx.com/smsc.php?user=xxxxx&pass=xxxxx&text=".$encoded_message."&to=".$datensatz_telefon."&sendsms=no");
- ?>
Schon mal Danke an alle die sich gedanken darüber machen.
Grüße KMD