invio massivo dati a file php

AndreaCerre

Utente Attivo
7 Giu 2020
55
0
6
Ciao a tutti, sto creando un portale che gestisce i dati di un sensore arduino. Ho creato questa pagina per simulare l'invio dati alla mia pagina con i controlli e le funzioni di inserimento nel db.
Ora avrei bisogno di provare un invio massivo, ad esempio ogni 3000 millisecondi inviare questi dati e ricaricare la pagina di invio. Inoltre dovrei fare i test con dati diversi ovviamente, è possibile trovare un modo diverso da quello di creare le stringhe ogni volta?

Grazie per chi potrà aiutarmi. Premetto che non me ne intendo per nulla di javascript.

Codice:
<!DOCTYPE html>
<html>
    
    
      <link rel="canonical" href="https://getbootstrap.com/docs/4.5/examples/offcanvas/">
    
    <!-- CSS per icone fontawesome -->
<link rel="stylesheet" type="text/css" href="https://use.fontawesome.com/releases/v5.0.7/css/all.css">

    <!-- Bootstrap core CSS -->
<link href="https://getbootstrap.com/docs/4.5/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">

    <!-- Favicons -->
<link rel="apple-touch-icon" href="http://www.sitocavour2a.com/IcoCAV2A.png" sizes="180x180">
<link rel="icon" href="http://www.sitocavour2a.com/IcoCAV2A.png" sizes="32x32" type="image/png">
<link rel="icon" href="http://www.sitocavour2a.com/IcoCAV2A.png" sizes="16x16" type="image/png">
<link rel="manifest" href="https://getbootstrap.com/docs/4.5/assets/img/favicons/manifest.json">
<link rel="mask-icon" href="https://getbootstrap.com/docs/4.5/assets/img/favicons/safari-pinned-tab.svg" color="#563d7c">
<link rel="icon" href="http://www.sitocavour2a.com/IcoCAV2A.png">
<meta name="msapplication-config" content="https://getbootstrap.com/docs/4.5/assets/img/favicons/browserconfig.xml">
<meta name="theme-color" content="#563d7c">


    <style>
      .bd-placeholder-img {
        font-size: 1.125rem;
        text-anchor: middle;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
      }

      @media (min-width: 768px) {
        .bd-placeholder-img-lg {
          font-size: 3.5rem;
        }
      }
    </style>
    <!-- Custom styles for this template -->
    <link href="https://getbootstrap.com/docs/4.5/examples/offcanvas/offcanvas.css" rel="stylesheet">
    
<body>

<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.bundle.min.js"></script>
<script type='text/javascript'>


function invia_dati(servURL, params, method) {
    method = method || "post"; // il metodo POST è usato di default
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", servURL);
    for(var key in params) {
        var hiddenField = document.createElement("input");
        hiddenField.setAttribute("type", "hidden");
        hiddenField.setAttribute("name", key);
        hiddenField.setAttribute("value", params[key]);
        form.appendChild(hiddenField);
    }
    document.body.appendChild(form);
    form.submit();
}

    invia_dati('https://xxxxxxxxx/prova-dati-in-db/',{ 'ntx':'888TTT','type':'3','area':'11000001','signal_strength':'114.00','bat':'2.530'},'post');
    
    
</script>

</body>
</html>
 
ho abbozzato questo codice che mi sembra più semplice, soprattutto per adattarlo ad una esecuzione multipla,
HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
</head>
<body>
<script type='text/javascript'>
$(document).ready(function()
{
    function invia_dati(servURL, params, method)
    {
        method = method || "post";

        $.ajax
        ({
            type:    method,
            cache:   false,
            url:     servURL,
            data:    params,
            success: function(response) { $('#myDiv').html(response); },
            error:   function()         { alert("malfunzionamento ajax"); }
        });
    }
    alert("sono qui !");
    invia_dati('http://localhost/test_site/php/TEST/HTML/ArduinoTestRicevi.php',{ 'ntx':'888TTT','type':'3','area':'11000001','signal_strength':'114.00','bat':'2.530'},'post');
});
</script>
<div id="myDiv"> </div>
</body>
</html>

PHP:
<?php
$tabella  = "";

if(!empty($_GET))
{
  extract($_GET,  EXTR_OVERWRITE);

  $tabella.= '<h3>GET  ******************************</h3>';
  $tabella.= '<table width="800" border="0" cellspacing="5" cellpadding="5">';
  while(list($chiave, $valore)=each($_GET))
    $tabella.= "<tr><td>".$chiave." : </td><td>".${$chiave}."</td></tr>";
  $tabella.= "</table>";
}

if(!empty($_POST))
{
  extract($_POST, EXTR_OVERWRITE);

  $tabella.= '<h3>POST ******************************</h3>';
  $tabella.= '<table width="800" border="0" cellspacing="5" cellpadding="5">';
  while(list($chiave, $valore)=each($_POST))
    $tabella.= "<tr><td>".$chiave." : </td><td>".${$chiave}."</td></tr>";
  $tabella.= "</table>";
}

echo "<h3>ho ricevuto i dati</h3><br />".$tabella;
?>

risultato

1617710767638.png
 
Grazie mille, ora il mio problema è come simulare un esecuzione multipla, in teoria dovrei simulare questo invio POST circa 400 volte in un minuto. Per ora sono riuscito con un redirect alla pagina nel mio file di ricezione php
 
puoi usare un codice tipo,
JavaScript:
function invia_dati(.........) {
    setTimeout(function() {

        // qui raccogli i dati che ti servono
        // e attivi la chiamata ajax per inviarli allo script php che li tratta

        invia_dati(.........);
    }, 3000);
}

all'interno del loop puoi mettere un contatore delle iterazioni per fermarlo quando serve

ti suggerisco di usare ajax come veicolo di trasporto dei dati
 
ho provato così,

risultato
Codice:
[06-Apr-2021 18:15:04 Europe/Rome] POST ******************************
[06-Apr-2021 18:15:04 Europe/Rome] i : 0
[06-Apr-2021 18:15:04 Europe/Rome] msec : 1617725704054
[06-Apr-2021 18:15:04 Europe/Rome] ntx : 888TTT
[06-Apr-2021 18:15:04 Europe/Rome] type : 3
[06-Apr-2021 18:15:04 Europe/Rome] area : 11000001
[06-Apr-2021 18:15:04 Europe/Rome] signal_strength : 114.00
[06-Apr-2021 18:15:04 Europe/Rome] bat : 2.530
[06-Apr-2021 18:15:07 Europe/Rome] POST ******************************
[06-Apr-2021 18:15:07 Europe/Rome] i : 1
[06-Apr-2021 18:15:07 Europe/Rome] msec : 1617725707088
[06-Apr-2021 18:15:07 Europe/Rome] ntx : 888TTT
[06-Apr-2021 18:15:07 Europe/Rome] type : 3
[06-Apr-2021 18:15:07 Europe/Rome] area : 11000001
[06-Apr-2021 18:15:07 Europe/Rome] signal_strength : 114.00
[06-Apr-2021 18:15:07 Europe/Rome] bat : 2.530
[06-Apr-2021 18:15:10 Europe/Rome] POST ******************************
[06-Apr-2021 18:15:10 Europe/Rome] i : 2
[06-Apr-2021 18:15:10 Europe/Rome] msec : 1617725710076
[06-Apr-2021 18:15:10 Europe/Rome] ntx : 888TTT
[06-Apr-2021 18:15:10 Europe/Rome] type : 3
[06-Apr-2021 18:15:10 Europe/Rome] area : 11000001
[06-Apr-2021 18:15:10 Europe/Rome] signal_strength : 114.00
[06-Apr-2021 18:15:10 Europe/Rome] bat : 2.530
[06-Apr-2021 18:15:13 Europe/Rome] POST ******************************
[06-Apr-2021 18:15:13 Europe/Rome] i : 3
[06-Apr-2021 18:15:13 Europe/Rome] msec : 1617725713064
[06-Apr-2021 18:15:13 Europe/Rome] ntx : 888TTT
[06-Apr-2021 18:15:13 Europe/Rome] type : 3
[06-Apr-2021 18:15:13 Europe/Rome] area : 11000001
[06-Apr-2021 18:15:13 Europe/Rome] signal_strength : 114.00
[06-Apr-2021 18:15:13 Europe/Rome] bat : 2.530
[06-Apr-2021 18:15:16 Europe/Rome] POST ******************************
[06-Apr-2021 18:15:16 Europe/Rome] i : 4
[06-Apr-2021 18:15:16 Europe/Rome] msec : 1617725716052
[06-Apr-2021 18:15:16 Europe/Rome] ntx : 888TTT
[06-Apr-2021 18:15:16 Europe/Rome] type : 3
[06-Apr-2021 18:15:16 Europe/Rome] area : 11000001
[06-Apr-2021 18:15:16 Europe/Rome] signal_strength : 114.00
[06-Apr-2021 18:15:16 Europe/Rome] bat : 2.530

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
</head>
<body>
<script type='text/javascript'>
$(document).ready(function()
{
    var servURL = 'http://localhost/test_site/php/TEST/HTML/ArduinoTestRicevi.php',
        method  = 'post',
        i       = 0;

    function invia_dati()
    {
        if (i < 5)
        {
            setTimeout(function()
            {
                msec   = Date.now();
                params = { 'i':i,'msec':msec,'ntx':'888TTT','type':'3','area':'11000001','signal_strength':'114.00','bat':'2.530'};

                $.ajax
                ({
                    url:     servURL,
                    type:    method,
                    cache:   false,
                    data:    params,
//                    success: function(response) { $('#myDiv').html(response); },
//                    error:   function()         { alert("malfunzionamento ajax"); }
                });

                ++i;
                invia_dati();
            }, 3000);
        }
    }

    alert("sono qui !");
    invia_dati();
});
</script>
<div id="myDiv"> </div>
</body>
</html>

PHP:
<?php
error_reporting(-1);
ini_set('display_errors' , FALSE);
ini_set('log_errors'     , TRUE);

if(!empty($_GET))
{
  extract($_GET,  EXTR_OVERWRITE);

  error_log("GET  ******************************", 0);

  while(list($chiave, $valore)=each($_GET))
    error_log($chiave." : ".${$chiave}, 0);
}

if(!empty($_POST))
{
  extract($_POST, EXTR_OVERWRITE);

  error_log("POST ******************************", 0);
  while(list($chiave, $valore)=each($_POST))
    error_log($chiave." : ".${$chiave}, 0);
}

echo "<h3>ho ricevuto i dati</h3><br />";
?>
 

Discussioni simili