Php 脚本必须在24小时内执行X次。我如何随机化?
我有一个PHP脚本,它可以在几秒钟内完成一些事情,但长时间没有运行。我需要执行这个脚本,让我们假设,这个脚本每天可以更改12次。24/12=2小时 我可以每2小时执行一次脚本,但我需要它在24小时内随机化 这意味着脚本不必在下午1:05、03:05、05:05执行,而是在下午1:37、03:11、05:46执行。我想你已经明白这一点了。对不起,我不太清楚 如果需要,可以安装cron和其他工具。运行Debian6Php 脚本必须在24小时内执行X次。我如何随机化?,php,bash,cron,Php,Bash,Cron,我有一个PHP脚本,它可以在几秒钟内完成一些事情,但长时间没有运行。我需要执行这个脚本,让我们假设,这个脚本每天可以更改12次。24/12=2小时 我可以每2小时执行一次脚本,但我需要它在24小时内随机化 这意味着脚本不必在下午1:05、03:05、05:05执行,而是在下午1:37、03:11、05:46执行。我想你已经明白这一点了。对不起,我不太清楚 如果需要,可以安装cron和其他工具。运行Debian6 Bounty 100 rep将提供一个工作解决方案。我会这样做:设置一个cron,让
Bounty 100 rep将提供一个工作解决方案。我会这样做:设置一个cron,让它每2小时运行一次,就像这样
0 /2 * * * php youscript.php
这意味着每隔一小时运行一次yourscript.php。然后,在php代码本身的顶部,只需输入:
sleep(rand(5*60,50*60));
这将使脚本在开始工作之前暂停5到50分钟之间的随机时间。您可以更改随机数的最小值和最大值,以确保两次运行之间的时间间隔最短
如果你想让它运行24次,那就去做吧
0 * * * * php youscript.php
甚至一天48次
0,30 * * * * php youscript.php
我会这样做:设置一个cron,让它像这样每2小时运行一次
0 /2 * * * php youscript.php
这意味着每隔一小时运行一次yourscript.php。然后,在php代码本身的顶部,只需输入:
sleep(rand(5*60,50*60));
这将使脚本在开始工作之前暂停5到50分钟之间的随机时间。您可以更改随机数的最小值和最大值,以确保两次运行之间的时间间隔最短
如果你想让它运行24次,那就去做吧
0 * * * * php youscript.php
甚至一天48次
0,30 * * * * php youscript.php
您可以始终在cronjob开始时休眠Rand60,1.5*60以抵消其执行。在此期间,您将有一个空闲的PHP进程,这可能是个问题,也可能不是问题。您可以在cronjob开始时始终休眠Rand60,1.5*60以抵消其执行。在此期间,您将有一个空闲的PHP进程,这可能是问题,也可能不是问题。如果您严格要求每天运行X次: 手动或制作一个简单的脚本将一天分成X部分。 为每个部分制作一条cron线。 在运行期间,将脚本随机延迟0到24小时/x。 如果没有: 克朗在午夜跑步。 PHP使用泊松分布延迟,然后处理。 “脚本结束”运行新脚本,除非其处理时间超过午夜。
如果您严格要求每天运行X次: 手动或制作一个简单的脚本将一天分成X部分。 为每个部分制作一条cron线。 在运行期间,将脚本随机延迟0到24小时/x。 如果没有: 克朗在午夜跑步。 PHP使用泊松分布延迟,然后处理。 “脚本结束”运行新脚本,除非其处理时间超过午夜。
假设您希望脚本每天运行N次。然后创建一个bash脚本my_php_runner.bash,如下所示:
#!/bin/bash
N=12 # 50 times a day
let WAIT_TIME=86400/$N
while [[ $n -gt 0 ]]; do
php yourscript.php
# Sleep for $WAIT +/- 300 seconds
sleep $(( $WAIT - 300 + $RANDOM%600 ))
((n--))
done
它将运行您的脚本12次,在两次运行之间等待115到125分钟。然后添加如下内容
0 0 * * * my_php_runner.bash
在cron中,每天运行一次bash脚本。假设您希望脚本每天运行N次。然后创建一个bash脚本my_php_runner.bash,如下所示:
#!/bin/bash
N=12 # 50 times a day
let WAIT_TIME=86400/$N
while [[ $n -gt 0 ]]; do
php yourscript.php
# Sleep for $WAIT +/- 300 seconds
sleep $(( $WAIT - 300 + $RANDOM%600 ))
((n--))
done
它将运行您的脚本12次,在两次运行之间等待115到125分钟。然后添加如下内容
0 0 * * * my_php_runner.bash
在cron中,每天运行一次bash脚本。您关心间隔多长吗?最小的数字是12,或者说每天运行的确切次数是12?这个数字可以是任何数字。通常是30-50。我不关心执行之间是否有最小的时间间隔。您可以每15分钟运行一次cron,并使用php脚本决定是否运行确切的作业,如果时间合适,则使用带有时间的数组,如果不退出作业,则运行。它必须一天运行XXX次,或者一天大约XXX次?@wildplasser 1-2次失误是可以接受的。你关心间隔多长时间吗?最小的数字是12,或者说每天运行的确切次数是12?这个数字可以是任何数字。通常是30-50。我不关心执行之间是否有最小的时间间隔。您可以每15分钟运行一次cron,并使用php脚本决定是否运行确切的作业,如果时间合适,则使用带有时间的数组,如果不退出作业,则运行。它必须一天运行XXX次,或者一天大约XXX次?@wildplasser 1-2次失误是可以接受的。是的,但是如果我不得不一天执行50次而不是12次呢?我刚刚说了12,所以更容易理解我的需求:这说明了,对于12的倍数,这是最简单的,但是你可以看到cron语法是如何工作的。很可能cron已经安装在你的计算机上,你只需要编辑指令文件。是的,但是如果我必须每天执行它12次,而不是50次呢?我刚刚说了12,所以更容易理解我的需求:这表明
如何,使用12的倍数是最简单的,但是您可以看到cron语法的工作原理很可能cron已经安装在您的计算机上,您只需编辑指令文件是的,您的cronjob将在固定时间运行,之后它可以在开始工作之前随机休眠一段时间。是的,您的cronjob将在固定时间运行,之后它可以在开始工作之前随机休眠一段时间。实际上,这是一个非常好的主意。但是在N=50的情况下,+-300秒的睡眠时间太长,因此脚本不会执行50次。True。为了简单起见,我对300进行了硬编码,但您可以将其设置为WAIT_TIME/10。实际上,这是一个非常好的主意。但是在N=50的情况下,+-300秒的睡眠时间太长,因此脚本不会执行50次。True。为了简单起见,我对300进行了硬编码,但您可以将其设置为WAIT_TIME/10。