php - 如何计算登录系统的总时间?

标签 php mysql html phpmyadmin codeigniter-3

我正在使用 CodeIgniter,并根据日期计算总时间。

说明:

我正在做的是,每次登录时我都会使用以下代码在数据库中插入last_Ativity日期和时间。

$data_login= array('emp_id' =>$result->id ,'last_activity' =>date("Y-m-d H:i:s", STRTOTIME(date('h:i:sa'))));
$this->db->insert('tbl_current_login',$data_login);

如果用户仍在系统中,last_activity时间会持续更新。 (我正在使用 ajax 来更新日期时间。我还没有共享该代码)。

现在我必须计算特定用户一天(当前日期)的总时间。

例如- emp_id 26 登录两次,所以我必须计算时间

First-time login date and time:-2018-09-17 07:27:55
Second-time login date and time:- 2018-09-17 07:35:22

它会根据用户登录的次数而增加。

我对时间感到困惑。我计算系统登录总小时数的方法是否正确? 我应该使用 MYSQL 查询还是 PHP 来计算?我需要一些想法。 你能帮我解决这个问题吗?

enter image description here

最佳答案

这就是我要做的

last_activity time continuously updating if the user still in the system . (I am using ajax to update the datetime. I haven't shared that code).

在更新行之前。

  • 检查是否存在事件行
    • 如果是,获取日期的时间戳并减去当前时间(从存储在数据库中的时间中将 last_activity 更改为当前时间)获取该数字并将其添加到名为“elapsed time”之类的整数列中(您必须将其添加到数据库中)
    • 如果没有,则输入耗时为 0 的行(取决于您如何放入第一行,也许在登录时),这可能永远不会成为问题。

对于时间戳,您可以执行选择来获取当前行。获取日期时间字段并使用其中之一

 $time = strtotime($row['last_activity']);

或者

 $time = (new DateTime($row['last_activity']))->getTimestamp();

然后,您只需对要替换的日期执行相同的操作,然后减去即可得到以秒为单位的差异。

$elapsed = time() - $time;

然后将其添加到当前行值并保存。这样您就可以跟踪他们在该 session 期间花费的时间(以秒为单位)的运行总计。

然后,当您需要计算总时间时,这很简单

SELECT SUM(elapsed_time) FROM {table} WHERE DATE(last_Ativity) = :date

如果您只处理数据库中的两个日期时间字段,那么获得它们之间的差异会更容易,但是感觉您已经有了代码来不断更新最后一个事件字段,从长远来看,这将需要更少的工作国际海事组织。

选项2

另一个选项是添加另一个日期时间字段来放入开始时间或登录时间。然后,当您查询时,您可以将它们转换为时间戳并减去以获得差值。

这使得 SQL 变得更加困难(在执行 SUM 时),我无法真正思考如何计算多行上耗时,然后将它们相加。但它确实大大简化了 PHP。所以哪种方式最适合您的需要。考虑一下您是否需要该实用程序知道他们何时登录,或者您是否只是想要一种更简单的方法来计算他们花费的时间。

类似的事情。

关于php - 如何计算登录系统的总时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52373301/

相关文章:

mysql - Liquibase 无法连接到 SQL Server

mysql - 从 mySQL 查询、连接和返回 ID

c# - 如何水平放置元素?

html - 如何使用 css 网格将 Logo 添加到导航栏

javascript - 如何停止图片的幻灯片放映?

php - 加快对同一mysql服务器、不同表的请求

php - 从两个表中获取信息

php - 如何在magento中做条件?

mysql - 如何查询blob数据

php - 外键(新手)