Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在服务器端为每个用户运行函数/脚本_Php_Mysql_Cron_Client_Server - Fatal编程技术网

Php 在服务器端为每个用户运行函数/脚本

Php 在服务器端为每个用户运行函数/脚本,php,mysql,cron,client,server,Php,Mysql,Cron,Client,Server,我正在开发一个基本的lamp(愿意更改)网站,目前我需要一种方法在服务器上运行一些功能,每个用户可以运行几个小时,每X小时需要查询mysql数据库,查看该用户的值是否已更新,如果没有,则需要在数据库中插入新记录……我还应该提到,每个用户的“每X小时”也可以更改,每个用户的函数总运行时间也可以更改 因此,基本上我需要一个功能,每个用户在服务器上连续运行几个小时。最好的方法是什么?我希望该网站能够支持许多用户(如10000+) 我愿意尝试新技术的每一个方面的网站,我仍然在设计阶段,我正在寻找一些投入

我正在开发一个基本的lamp(愿意更改)网站,目前我需要一种方法在服务器上运行一些功能,每个用户可以运行几个小时,每X小时需要查询mysql数据库,查看该用户的值是否已更新,如果没有,则需要在数据库中插入新记录……我还应该提到,每个用户的“每X小时”也可以更改,每个用户的函数总运行时间也可以更改

因此,基本上我需要一个功能,每个用户在服务器上连续运行几个小时。最好的方法是什么?我希望该网站能够支持许多用户(如10000+)

我愿意尝试新技术的每一个方面的网站,我仍然在设计阶段,我正在寻找一些投入

我看过cron,但不确定它在处理这么多用户时会有多好

编辑:这是一个典型的事件场景

  • 用户按下网站上的按钮并关闭浏览器

  • 现在,服务器从按下按钮开始启动计时器 服务器将检查该用户是否在给定的时间范围内按下了不同的按钮(每个用户的时间范围可能会改变),例如在30分钟内。如果他们没有按其他按钮,那么服务器需要自动在数据库中插入新记录。 脚本需要继续运行,每30分钟检查一次,比如接下来的5小时


谢谢大家!

Cron的工作原理与您编写它将运行的页面的代码一样好。这不是cron限制

顺便说一句,这个问题模棱两可。也许解释一下你的全部情况会有所帮助

同时,我的建议是设置一个纸条,允许您手动检查需要检查的内容

您肯定需要使用适当的索引对数据库进行InnoDB优化,以支持1000多个用户

为了减少对数据库的调用次数,一种常见的做法是只在您感兴趣的内容上运行脚本(因此,对于用户,您将只选择那些在过去3小时内登录的用户) 这可以通过两种方式实现,一种是简单的select语句,另一种是将条目添加到登录页面上的特定表中,并在自动脚本完成运行后将其删除


所有这些都是纯粹的理论,没有确切理解你需要做什么。

你在告诉你想做什么/如何做,但不是你想做的原因。也许让我们知道为什么会导致不同的方式)

但是,您仍然可以使用
cron
(或任何类似的工具)。诀窍是拥有

  • last\u交互
    timestamp列
  • a
    最大间隔
  • 每日运行时列

在您的
用户
数据库中。未优化,但您正处于设计阶段,因此您不应该过多关注性能方面(明确要求的除外)。

好的,我想我明白了,我已经用一个示例场景更新了这个问题。将每分钟运行一个php脚本,检查在时间范围内且未按下按钮的用户。然后为每个用户插入一条记录,一条一条地插入数据库?如果有很多用户,这会花费很多时间吗?如果php脚本运行超过一分钟,cron再次运行会发生什么?对不起,我对克朗完全陌生,你仍然在解释你想做什么,而不是为什么。您是否正在尝试处理会话(例如,如果某个特定用户在5小时内未执行任何操作,您将其从您的应用程序中注销?)。您还可以使用cookies存储交互的最后时间戳。但是,如果您正在实现一个安全特性,那么这可能不太合适。大约需要一段时间,您可以对其进行测试;)只需使用脚本在数据库中创建50k个假用户,并模拟几个交互。这甚至可以让你更好地理解你想做什么:)祝你好运。你不需要每个用户都有计时器。您只需要一个:每X分钟扫描一次数据库中的用户,并根据需要的逻辑将每个用户标记为“计时器已启动”、“无更改”或“计时器已停止”。克朗可以这样做。