【问题标题】:How to run a php file at a specific time?如何在特定时间运行 php 文件?
【发布时间】:2014-12-07 12:48:57
【问题描述】:

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

【问题讨论】:

  • “特定的随机时间”是什么意思?当然,它要么是特定的,要么是随机的;不是两者。
  • @Mike W 使用 php time(),我在现在的 24 小时内有一秒钟。我希望脚本在那一秒执行。

标签: php linux cron centos


【解决方案1】:

您可以使用at 命令,运行您的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'");

【讨论】:

    【解决方案2】:

    一种可能的解决方法是从 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');
    }
    

    如果您需要更多粒度,更好的选择是将其作为守护程序运行(请参阅建议 here)并永远循环(可能包含一些 sleep())直到时机成熟。

    【讨论】:

    • 事情是,这涉及到 BTC 的汇款。我正在制作的网站涉及在非常特定的时间发生的转移。我可以制作每秒运行的 cronjob 吗?该脚本需要运行数据库查询,并执行一些小的数学方程式,并且仅在需要时执行更多的数据库查询。
    猜你喜欢
    • 2011-12-14
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    相关资源
    最近更新 更多