如何在特定时间运行php文件?

如何在特定时间运行php文件?,php,linux,cron,centos,Php,Linux,Cron,Centos,所以,我正在CentOS服务器上用PHP开发一个时间敏感的网站。我有一个随机时间选择在未来,在24小时内的现在。此时,我需要执行一个PHP文件,选择一个新日期并打开同一个文件。这怎么可能实现呢?我简单地看了一下cronjobs,但我找不到一种方法使它们在特定的、随机的时间打开。一种可能的解决方法是从cron作业运行脚本,比如说,每10分钟运行一次。在脚本顶部,检查应该包含时间戳的特定文件。如果当前时间大于文件中的值,则执行该作业,并将新的时间戳值写入该文件 $time_to_run = intv

所以,我正在CentOS服务器上用PHP开发一个时间敏感的网站。我有一个随机时间选择在未来,在24小时内的现在。此时,我需要执行一个PHP文件,选择一个新日期并打开同一个文件。这怎么可能实现呢?我简单地看了一下cronjobs,但我找不到一种方法使它们在特定的、随机的时间打开。

一种可能的解决方法是从cron作业运行脚本,比如说,每10分钟运行一次。在脚本顶部,检查应该包含时间戳的特定文件。如果当前时间大于文件中的值,则执行该作业,并将新的时间戳值写入该文件

$time_to_run = intval(file_get_contents('my.timestamp'));
if(time() >= $time_to_run) {
    do stuff
    file_put_contents(time() + random value, 'my.timestamp');
}
如果您需要更高的粒度,更好的选择是将其作为守护进程运行(请参阅建议),并一直循环(可能包含一些
sleep()
),直到时间到来。

您可以使用命令,运行PHP文件,最后注册,下次再调用at。像这样的

<?php
// your PHP code in here, and then find out when is the next call time
$time = date('H:i', intval($time)); // or another good way to make sure time value is safe to use as a shell argument, like using escapeshellarg()
$run_me = "/usr/bin/env php " . __FILE__;
exec("echo '$run_me' | at '$time'");

你所说的“特定的、随机的时间”是什么意思?当然,它要么是特定的,要么是随机的;不是两者都有。@Mike W使用php time(),我在24小时内有一秒钟的时间。我希望脚本能在那一秒执行。问题是,这涉及到BTC中的资金转移。我正在做的网站涉及在一个非常特定的时间发生的转移。我可以制作一个每秒运行的cronjob吗?该脚本需要运行一个DB查询,并执行一些次要的数学公式,并且仅在需要时执行更多的DB查询。