Fetching row cu AJAX la un interval de 2 secunde

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

ezramod
PHPRomania Supporter
Mesaje: 6
Membru din: Mie Mar 14, 2012 9:37 am

Fetching row cu AJAX la un interval de 2 secunde

Mesajde ezramod » Dum Sep 09, 2018 9:27 pm

Salut, nu stiu daca am scris corect titlul sa fie cat mai explicit , speta mea este cam asa:

Am Form-ul:

Cod: Selectaţi tot

<form action="<?=$_SERVER['PHP_SELF']?>" method="post" class="trimite_sms" id="trimite_sms">
                  <div class="row form-group">                  
                            <div class="col-12 ">
                        <textarea name="sms_mesaj" id="sms_mesaj" rows="9" placeholder="Aici scrie mesajul tau" class="form-control"></textarea>
                        <div class="clearfix"></div>
                           <hr />
                        <div class="clearfix"></div>
                        <h6 class="pull-right" id="count_message"></h6>
                        <div class="clearfix"></div>
                           <hr />
                        <div class="clearfix"></div>
                     </div>
                     <div class="col-12 text-center">
                        <input type="submit" name="trimite_sms_submit" id="trimite_sms_submit" class="btn btn-success btn-lg" value="Trimite mesaj" />
                     </div>                  
                        </div>
                  </form>


care executa :

Cod: Selectaţi tot

if(!empty($_POST)) {
$mesaj = $_POST['sms_mesaj'];
$i = 1;
$result = mysql_query("SELECT * FROM clienti_test");
while ($row = mysql_fetch_array($result)) {
$numar = $row['telefon'];
$mesaj = str_replace('<br />','%0A',nl2br($_POST['sms_mesaj']));
echo '<div class="col-sm-1">'.$i.'</div><div class="col-sm-11"><iframe class="iframe_sms" src="http://192.168.0.121:8080/v1/sms/send/?phone='.$numar.'&message='.$mesaj.'"  frameborder="0" allowfullscreen=""></iframe></div>';
$i++;
}
}


Dupa executarea form-ului scriptul incarca iframe-ul pentru moment de 200 de ori in acelasi timp, iar iframe-ul trimite sms-uri de pe un telefon android cu sms gate away

Avand 200 de numere, adica 200 de iframe-uri intr-o simpla executie , des pagina crasheaza sau telefonul nu reuseste sa incarce toate sms-urile, deaceea as avea nevoie de o idee/sugestie cum as putea sa facca fiecare $result sa fie incarcat ajax odata la 2 secunde, pana se termina toate cele 200 de iframe-uri.

Sper ca m-am exprimat destul de explicit pentru a intelege ceea ce vreau sa fac.



Avatar utilizator
Jetix
Junior Member
Mesaje: 32
Membru din: Mie Aug 09, 2017 3:16 am
Contact:

Re: Fetching row cu AJAX la un interval de 2 secunde

Mesajde Jetix » Dum Sep 09, 2018 10:34 pm

1. Iti sugerez sa incepi sa inveti PDO (mysql are vulnerabilitati).
2. Daca am inteles bine, vrei ca sa trimiti un mesaj la fiecare numar din baza de date, iar mesajele sa fie acordate la un interval de 2 secunde.
3. Nu stiu cum se face asta, glumesc, incearca asta si spune-mi daca merge (nu l-am testat).

Cod: Selectaţi tot

<?php

if(!empty($_POST)) {
   $mesaj = $_POST['sms_mesaj'];
   $i = 1;
   $result = mysql_query("SELECT * FROM clienti_test");
   while ($row = mysql_fetch_array($result)) {
      $numar = $row['telefon'];
      if ($numar > 0) {
         $mesaj = str_replace('<br />','%0A',nl2br($_POST['sms_mesaj']));
         echo '<div class="col-sm-1">'.$i++.'</div><div class="col-sm-11"><iframe class="iframe_sms" src="http://192.168.0.121:8080/v1/sms/send/?phone='.$numar.'&message='.$mesaj.'"  frameborder="0" allowfullscreen=""></iframe></div>';
         sleep(5);
      } else {
         echo 'Nu am gasit numar de telefon.';
      }
   }
}

?>

<form action="<?=$_SERVER['PHP_SELF']?>" method="post" class="trimite_sms" id="trimite_sms">
   <div class="row form-group">                 
      <div class="col-12 ">
         <textarea name="sms_mesaj" id="sms_mesaj" rows="9" placeholder="Aici scrie mesajul tau" class="form-control"></textarea>
         <div class="clearfix"></div>
         <hr />
         <div class="clearfix"></div>
         <h6 class="pull-right" id="count_message"></h6>
         <div class="clearfix"></div>
         <hr />
         <div class="clearfix"></div>
      </div>
      <div class="col-12 text-center">
         <input type="submit" name="trimite_sms_submit" id="trimite_sms_submit" class="btn btn-success btn-lg" value="Trimite mesaj" />
      </div>                 
   </div>
</form>

Eu am pus 5 secunde, daca vrei modifici tu.

ezramod
PHPRomania Supporter
Mesaje: 6
Membru din: Mie Mar 14, 2012 9:37 am

Re: Fetching row cu AJAX la un interval de 2 secunde

Mesajde ezramod » Lun Sep 10, 2018 7:32 am

ms frumos pentru reply, dar nu functioneaza, daca setez sleep la 5 secunde sau 60 de secunde spre exemplu, dupa executia butonului trimite, scriptul sta acele 5 secunde sau 60 sec depinde cate am pus, dupa care da drumu la toate deodata, asa face si cu ajax (in modul in care am incercat eu), nu trimite one by one

Avatar utilizator
Jetix
Junior Member
Mesaje: 32
Membru din: Mie Aug 09, 2017 3:16 am
Contact:

Re: Fetching row cu AJAX la un interval de 2 secunde

Mesajde Jetix » Lun Sep 10, 2018 11:37 am

ezramod scrie:ms frumos pentru reply, dar nu functioneaza, daca setez sleep la 5 secunde sau 60 de secunde spre exemplu, dupa executia butonului trimite, scriptul sta acele 5 secunde sau 60 sec depinde cate am pus, dupa care da drumu la toate deodata, asa face si cu ajax (in modul in care am incercat eu), nu trimite one by one

Hmm, nu prea as crede, dar fie, uite aici un cond, l-am testat si eu si merge:

Cod: Selectaţi tot

<?php

$conn = new mysqli('localhost', 'root', '', 'test') or die('Error the connection to database!');

if (!empty($_POST)) {
   $mesaj = $_POST['sms_mesaj'];
   $i = 1;
   $result = $conn->query("SELECT * FROM clienti_test");
   while ($row = mysqli_fetch_array($result)) {
      $numar = $row['telefon'];
      if ($numar > 0) {
         $mesaj = str_replace('<br />','%0A',nl2br($_POST['sms_mesaj']));
         echo '<div class="col-sm-1">'.$i++.' - '.date("H:i:s").'</div><div class="col-sm-11"><iframe class="iframe_sms" src="http://192.168.0.121:8080/v1/sms/send/?phone='.$numar.'&message='.$mesaj.'"  frameborder="0" allowfullscreen=""></iframe></div>';
         sleep(5);
      } else {
         echo 'Nu am gasit numar de telefon.';
      }
   }
}

?>

<form action="<?=$_SERVER['PHP_SELF']?>" method="post" class="trimite_sms" id="trimite_sms">
   <div class="row form-group">                 
      <div class="col-12 ">
         <textarea name="sms_mesaj" id="sms_mesaj" rows="9" placeholder="Aici scrie mesajul tau" class="form-control"></textarea>
         <div class="clearfix"></div>
         <hr />
         <div class="clearfix"></div>
         <h6 class="pull-right" id="count_message"></h6>
         <div class="clearfix"></div>
         <hr />
         <div class="clearfix"></div>
      </div>
      <div class="col-12 text-center">
         <input type="submit" name="trimite_sms_submit" id="trimite_sms_submit" class="btn btn-success btn-lg" value="Trimite mesaj" />
      </div>                 
   </div>
</form>


https://i.imgur.com/4YuVIzM.png

ezramod
PHPRomania Supporter
Mesaje: 6
Membru din: Mie Mar 14, 2012 9:37 am

Re: Fetching row cu AJAX la un interval de 2 secunde

Mesajde ezramod » Lun Sep 10, 2018 9:34 pm

Multumesc Jetix, varianta finala era:

Cod: Selectaţi tot

if (!empty($_POST)) {
   $i = 1;
    $result = mysql_query("SELECT * FROM clienti_test");
   while ($row = mysql_fetch_array($result)) {
      $numar = $row['telefon'];
      if ($numar > 0) {
         $mesaj = str_replace('<br />','%0A',nl2br($_POST['sms_mesaj']));
         echo '<div class="col-sm-12">'.$i++.' - '.date("H:i:s").'</div><div class="col-sm-12"><iframe class="iframe_sms" src="http://192.168.0.121:8080/v1/sms/send/?phone='.$numar.'&message='.$mesaj.'"  frameborder="0" allowfullscreen=""></iframe></div>';
   flush();
   ob_flush();
        sleep(5);
      } else {
         echo 'Nu am gasit numar de telefon.';
      }
   }
}


flush();
ob_flush();
sleep(5);

necuratu
PHPRomania Supporter
Mesaje: 29
Membru din: Vin Iun 19, 2009 4:09 pm
Localitate: Online
Contact:

Re: Fetching row cu AJAX la un interval de 2 secunde

Mesajde necuratu » Joi Sep 13, 2018 12:00 am

scriemi in privat am eu solutia construita de mine un ( crm ) cu gatewayuri multiple , si posibilitate whatsup , cu canale active india

ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: Fetching row cu AJAX la un interval de 2 secunde

Mesajde ViezuREX » Sâm Sep 22, 2018 6:49 am

Iti rcomand sa folosesti CURL pentru apelul catre gateway (telefon) deoarece solutia cu iframe, chiar daca merge, poate ridica multiple probleme.

ezramod
PHPRomania Supporter
Mesaje: 6
Membru din: Mie Mar 14, 2012 9:37 am

Re: Fetching row cu AJAX la un interval de 2 secunde

Mesajde ezramod » Sâm Sep 22, 2018 8:42 am

Am folosit o solutie curl si mi-a creat foarte mult probleme, gen nu trimetea la toti useri, sau dădea drumu bulk la sms-uri


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 47 vizitatori