从php应用程序服务器到mysql数据库服务器的准确网络时间
我有两台服务器,一台是运行PHP应用程序的应用服务器,另一台是运行Mysql数据库的服务器。我想测量从应用服务器发送的请求到数据库服务器上接收的执行任何查询的请求所花费的时间 注意:请求刚发送到数据库服务器时的时间戳,以及在执行响应请求的任何查询之前在数据库服务器上接收的请求。我对在两台服务器之间传输数据所需的时间感兴趣。我知道这取决于数据的大小。我只想得到不同大小数据的时间 请建议是否有任何工具用于此类测量或任何方法仅用于此特定请求。已经知道请求发送时间戳只需要知道如何捕获请求接收时间戳 任何人都可以建议从一台机器上的php服务器到另一台机器上的mysql db服务器这样做。 并在数据库、文件或任何有帮助的工具中的任何位置记录该时间。 到目前为止,我所做的是从php服务器上传任何文件,记录执行mysql查询之前的时间,并尝试在收到执行查询的请求时在数据库级别获取时间戳,但问题是,现在已经占用了时间,我认为这不是第一次命中datsbase的时间 代码是这样写的从php应用程序服务器到mysql数据库服务器的准确网络时间,php,mysql,postgresql,server,communication,Php,Mysql,Postgresql,Server,Communication,我有两台服务器,一台是运行PHP应用程序的应用服务器,另一台是运行Mysql数据库的服务器。我想测量从应用服务器发送的请求到数据库服务器上接收的执行任何查询的请求所花费的时间 注意:请求刚发送到数据库服务器时的时间戳,以及在执行响应请求的任何查询之前在数据库服务器上接收的请求。我对在两台服务器之间传输数据所需的时间感兴趣。我知道这取决于数据的大小。我只想得到不同大小数据的时间 请建议是否有任何工具用于此类测量或任何方法仅用于此特定请求。已经知道请求发送时间戳只需要知道如何捕获请求接收时间戳 任何
<?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>
PHP是同步的,所以这非常容易。使用一些非常简单的东西,应该马上返回 使用microtimetrue返回前后的时间戳浮动 然后,这取决于您使用的SQL API,但运行类似SELECT 1的程序
然后比较时间戳。我将在发送查询之前和之后使用应用程序服务器上的time函数。把差值除以二,你应该得到四舍五入的平均时间 请建议如何将收到的请求存储在数据库服务器@DevOf上,如果我提交100倍的更大文件,那么发送请求将花费更多时间,从数据库到应用程序的响应时间将非常少。上述解决方案将不起作用@philip@vinitdhull如果你谈论的是一个特定的情况,那就是你的问题应该反映的。因为你的问题太宽泛了,几乎没有研究成果好吧,这还不完全清楚。您也可以使用以下命令从数据库服务器获取时间戳:选择extractepoch from now;它是专门写的注释:请求刚发送到数据库服务器时的时间戳,以及在执行查询之前在数据库服务器上接收到的请求。感兴趣的是在两台服务器之间传输数据所需的时间。