0

我有一个页面,我试图循环遍历 mysql 查询的结果,在这个块中,我需要将 JSnew date().getTime()值发送到 php 函数以计算经过的时间,所有这些都在 while 循环内。

我如何做到这一点?

我的 php 页面是这样的:

 <body>
 <?php
 while($rows = $result->fetch_assoc()){
 echo "<div>".// now here i want to send the time value from JS to function 
 like time($a JS value)."</div>"
  }
  ?>

 </body>

编辑也许我让人们试图弄清楚执行时间,但事实并非如此。我希望将来自 mysql 查询的时间值与 php 函数中来自 JS 的客户端机器时间进行比较。我的 php 函数计算经过的时间。

4

3 回答 3

1

呃..奇怪......但当然如果你认为这很重要......

如果您认为可以在 php 脚本仍在运行任何代码的同时将 js 时间从客户端返回到您的客户端,那么它将不起作用!

但是如果需要,您可以通过 ajax 获取信息。

我们开始吧:将 sql 查询中的时间值添加到呈现网站的 DOM 对象中javascript 的值)

为了让事情变得轻松(对我来说),我假设要实现 jQuery。

标头

var sqltime = 1360599506; // unix timestamp set by php
// now let's get the information from the user incl his timezone
var tnow = new Date(); // string something like: "Mon Feb 11 2013 17:24:06 GMT+0100" 
// and a timestamp-like number for tnow
var tstmp = var now = Math.round(tnow.getTime() / 1000) 
//and now send those three values via ajax to the server:
var postdata = {action: 'ajaxtime', ts: sqltime, tj: tstmp, tr: tnow};
$.ajax({
    type: 'POST',
    url: "http://example.com/my.php",
    data: postdata,
    success: function (response)
    {
        //do something with the response if you want. just decode the received json string if any
    }
});
//you could also compare the two timestamps on clientside if this is more convenient.

并且 php 应该有一个触发 ajax 请求的触发器,将它放入你的 php 中,尽可能高(但在任何东西被回显或查询到你的 sql 之前!!)

if (array_key_exists('ajaxtime', $_REQUEST)) 
{
    $sql time = $_POST['ts'];
    $js_timestamp = $_POST['tj'];
    $readable_js_time = $_POST['tr'];

// here you can calculate the timestamps and get timezone from the readable_js_time and do whatever you need to.
$json['success'] = true;
$json['result'] = "my result from the calculation";

    // make sure no other code of this php is executed because of the ajaxtime request
    die();
    //if you want to response with a json string to parse in the javascript response use this:
    //die (jsonEncode($json));
}
于 2013-02-11T16:49:12.687 回答
0

你应该更好地使用 PHP 的 time 函数,如下所示:

$currTime = time();

但是,如果客户端浏览器和您的 Web 服务器可能位于不同的时区,那么您可以使用 get 查询参数将 javascript 时间传递给您的 PHP 脚本,然后在 PHP 脚本中访问它,例如:

$currTime = $_GET['jsCurrTime'];
于 2013-02-11T15:58:47.323 回答
0

如果你想在 PHP 中测量执行时间,你需要使用microtime;

$start = microtime(true);
// Some code to measure
$time = microtime(true) - $start;
于 2013-02-11T16:00:05.670 回答