2016-09-26 5 views
-2

У меня два сервера Один сервер приложений, на котором PHP приложение работает, а другой сервер, на котором Mysql базы данных работает. Я хочу измерить время, затраченное на отправку запроса с сервера приложений, чтобы запросить полученные на сервере базы данных для выполнения любого запроса.Точное время сеть из приложения PHP сервера к серверу базы данных MySQL

Примечание. Временная метка, когда запрос отправляется только серверу базы данных и запрашивается, который получен на сервере базы данных, перед выполнением любого запроса в ответ на запрос. Интересует время, необходимое для передачи данных между двумя серверами. Я знаю, что это зависит от размера данных. Я просто хочу получить время для разного размера данных.

любезно предложить Если есть какой-либо инструмент для такого рода для измерения или любым способом, чтобы сделать это только для этого конкретного запроса. (Уже известно о запросе отправить метку времени нужно только знать, как захватить запрос получил временную метку)

Может ли кто-нибудь предложить способ сделать это с сервера php на одной машине на сервер mysql db на другой машине. И записывайте это время в любом месте в базе данных или файле или любом инструменте, который может быть полезен. То, что я делаю до сих пор, - это загрузка любого файла с php-сервера и время записи перед выполнением запроса mysql и попытка получить отметку времени на уровне базы данных, когда он получает запрос на выполнение запроса, но проблема в том, что время уже выполнено(), которое i не думаю, что время, когда datsbase попадает в первый раз.

код записывается как этот

<?php 
include('db_config.php'); 
if (isset($_FILES['data'])) { 

    if (!file_exists('files/')) { 
     mkdir('files/', 0777, true); 
    } 
    if (!file_exists('img/')) { 
     mkdir('img/', 0777, true); 
    } 
    $errors = array(); 
    $file_name = $_FILES['data']['name']; 
    $file_size = $_FILES['data']['size']; 
    $file_tmp = $_FILES['data']['tmp_name']; 
    $file_type = $_FILES['data']['type']; 
    if (move_uploaded_file($file_tmp, "img/" . $file_name)) { 
     $l = 1; 

     $t = microtime(true); 
     $micro = sprintf("%03d", ($t - floor($t)) * 1000); 
     $d = new DateTime(date('Y-m-d H:i:s.' . $micro, $t)); 
     $dd = 'Receiving Time : ' . $d->format("Y-m-d H:i:s.u"); 
     $fileSize = 'File Size : ' . $file_size; 
     $res = 'Sending Time : ' . $_REQUEST['hidd'] . ' ' . $dd . ' ' . $fileSize; 


     $directory = 'files/'; 

     if (glob($directory . "*.txt") != false) { 
      $filecount = count(glob($directory . "*.txt")); 
      $filecount ++; 
      $file = "files/record_" . $filecount . ".txt"; 
      $fd = fopen($file, "a"); 
      if (!$fd) { 
       die("Could not open $file to write in"); 
      } 
      fwrite($fd, $res); 
     } else { 
      $file = "files/record_" . $l . ".txt"; 
      $fd = fopen($file, "a"); 
      if (!$fd) { 
       die("Could not open $file to write in"); 
      } 
      fwrite($fd, $res); 
     } 

     fclose($fd); 
    } 

    $db = new Database(); 
    $db->connect(); 

    echo $send_time = date("Y-m-d H:i:s"); 
    $db->insert('request_record', array("$file_name", "$file_size", $send_time, "$res"), "file_name, 
     file_size, 
     request_generated_time,  
     file_uploaded 
     "); 
    $res = $db->getResult(); 
    print_r($res); 
    echo $end_time = date("Y-m-d H:i:s"); } ?> 
<html> 
    <body> 

     <form action="" method="POST" enctype="multipart/form-data" id="frm1"> 
      <input type="file" name="data" /> 
      <input type="hidden" name="hidd" id="hd" /> 
      <input type="button" value="Submit" onclick="pdfSubmit()"/> 
     </form> 

    </body> 

    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script> 
    <script> 
       function pdfSubmit() { 
        var currentTime = new Date(); 
        var hours = currentTime.getHours(); 
        var minutes = currentTime.getMinutes(); 
        var seconds = currentTime.getSeconds(); 
        var miliseconds = currentTime.getMilliseconds(); 

        if (minutes < 10) { 
         minutes = "0" + minutes; 
        } 
        if (seconds < 10) { 
         seconds = "0" + seconds; 
        } 
        var year = pad(currentTime.getFullYear()); 
        var month = pad(currentTime.getMonth() + 1); 
        var day = pad(currentTime.getDate()); 

        var n = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds + '.' + miliseconds; 
        $('#hd').val(n); 
        $('#frm1').submit(); 
       } 
       function pad(numb) { 
        return (numb < 10 ? '0' : '') + numb; 
       } 
    </script> 
</html> 

ответ

1

PHP является синхронным, так это может быть довольно легко. Используйте что-то очень простое, которое должно немедленно вернуться.

Используйте microtime(true), чтобы вернуть пометку времени (до и после).

Тогда это зависит от того, какой SQL API вы используете, но запустите что-то вроде SELECT 1.

Затем сравните временные метки.

+0

любезно предложите, как сделать запрос на хранение, полученный на сервере базы данных @devon –

0

Я бы использовал функцию time() на сервере приложений перед отправкой запроса и после. Разделите разницу на два, и вы должны иметь среднее среднее время.

+0

, если я отправлю более крупные файлы по 100 раз, тогда потребуется больше времени для отправки запроса и очень мало времени для ответа от базы данных к приложению. И выше решение не будет работать @philip –

+0

@vinitdhull, если вы говорите об определенной ситуации, о чем должен отразиться ваш вопрос. Поскольку это ваш вопрос слишком широк и показывает очень мало исследований – e4c5

+0

Хорошо, это было не совсем ясно. Вы также можете получить временную метку с сервера базы данных, используя: SELECT extract (epoch FROM now()); – Philip