Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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每分钟更新mysql,请排队_Php_Mysql - Fatal编程技术网

如果php每分钟更新mysql,请排队

如果php每分钟更新mysql,请排队,php,mysql,Php,Mysql,我正在尝试做一些事情,在不同的时间执行3个不同的事情 因此,第一分钟将执行mysql查询,将set server更新为1 第二分钟将更新并将服务器行设置为2 第三分钟将更新并将服务器行设置为3 然后第四分钟将更新并再次将服务器行设置为1 第五分钟将更新并再次将服务器行设置为2 第六分钟将更新并再次将服务器行设置为3,依此类推,但始终为1,2,3 1,2,3 我可以这样做,但我有一个很长的代码,我知道可以做得更短,但不知道如何做 $t_Min=date("i"); if ($t_Min == 1

我正在尝试做一些事情,在不同的时间执行3个不同的事情

因此,第一分钟将执行mysql查询,将set server更新为1

第二分钟将更新并将服务器行设置为2

第三分钟将更新并将服务器行设置为3

然后第四分钟将更新并再次将服务器行设置为1

第五分钟将更新并再次将服务器行设置为2

第六分钟将更新并再次将服务器行设置为3,依此类推,但始终为1,2,3 1,2,3

我可以这样做,但我有一个很长的代码,我知道可以做得更短,但不知道如何做

$t_Min=date("i");

if ($t_Min == 1) {
mysql_query("UPDATE `list` SET `server` = '1'"); }

else if ($t_Min == 2) {
mysql_query("UPDATE `list` SET `server` = '2'"); }

else if ($t_Min == 3) {
mysql_query("UPDATE `list` SET `server` = '3'"); }

else if ($t_Min == 4) {
mysql_query("UPDATE `list` SET `server` = '1'"); }

else if ($t_Min == 5) {
mysql_query("UPDATE `list` SET `server` = '2'"); }

else if ($t_Min == 6) {
mysql_query("UPDATE `list` SET `server` = '3'"); }

使用模运算符
%

$insertValue = ($t_Min-1) % 3 + 1;
下面是一个演示:

$values = [1,2,3,4,5,6];

foreach ($values as $t_Min) {
    $insertValue = ($t_Min-1) % 3 + 1;
    echo "$t_Min => $insertValue \n";
}
将返回:

1 => 1 
2 => 2 
3 => 3 
4 => 1 
5 => 2 
6 => 3

演示:

使用模运算符
%

$insertValue = ($t_Min-1) % 3 + 1;
下面是一个演示:

$values = [1,2,3,4,5,6];

foreach ($values as $t_Min) {
    $insertValue = ($t_Min-1) % 3 + 1;
    echo "$t_Min => $insertValue \n";
}
将返回:

1 => 1 
2 => 2 
3 => 3 
4 => 1 
5 => 2 
6 => 3

演示:

让SQL完成工作的最简单方法-在一个查询中:

UPDATE list SET server=IF(MOD(MINUTE(NOW()), 3) = 0, 3, MOD(MINUTE(NOW()), 3))
当然,这取决于MySQL中的时间戳是否正确。您也可以使用变量来存储MOD,但这很容易读取


编辑:当然,如果你想要PHP中的数字,你可以在那里计算。逐步细分为:

$t_Min = (int)date("i");
$minuteMod = $t_Min % 3;  // This is modulus
$minutes = ($minuteMod == 0 ? 3 : $minuteMod);

最容易让SQL完成工作-在一个查询中:

UPDATE list SET server=IF(MOD(MINUTE(NOW()), 3) = 0, 3, MOD(MINUTE(NOW()), 3))
当然,这取决于MySQL中的时间戳是否正确。您也可以使用变量来存储MOD,但这很容易读取


编辑:当然,如果你想要PHP中的数字,你可以在那里计算。逐步细分为:

$t_Min = (int)date("i");
$minuteMod = $t_Min % 3;  // This is modulus
$minutes = ($minuteMod == 0 ? 3 : $minuteMod);

让PHP脚本在服务器上无限期运行是不好的。您可能希望使用javascript和ajax之类的东西每隔60秒发出一次请求,并让它传递变量以确定要使用哪个列表。或者你可以按照Robbie的建议去做。这实际上是一个脚本,需要每分钟在本地运行一次来更新行。让PHP脚本在服务器上无限期运行是不好的。您可能希望使用javascript和ajax之类的东西每隔60秒发出一次请求,并让它传递变量以确定要使用哪个列表。或者你可以按照Robbie的建议去做。这实际上是一个脚本,需要每分钟在本地运行一次来更新行。它不应该是
0吗?改为3
?它不应该是
0吗?3