【问题标题】:PHP function to increment variable by 1 each time script is executed每次执行脚本时 PHP 函数将变量增加 1
【发布时间】:2015-08-05 04:35:05
【问题描述】:

是否可以在每次执行脚本时将变量或数组加 1。

例如,我执行脚本并将变量设置为$increment = '1';

然后我关闭脚本并在 30 分钟后返回以再次执行脚本。

这次变量需要是$increment = '2';

脚本将每 30 分钟从 cron 运行一次,共 8 次。

第 8 次执行后,变量需要回退到 $increment = '1';

这可以通过会话实现吗?可以为 cli sapi 设置会话吗?

或者更容易输出具有下一个增量编号的文本文件并从文本文件中提取值?

感谢所有帮助。

【问题讨论】:

  • 您可以将变量值存储在数据库中,并在执行脚本时获取该变量并递增 1。
  • 假设我不想使用数据库。我可以将值存储在数组中,对吗?
  • @Mike 如果您不想使用数据库,您需要将值存储在cookiefile 之类的位置。

标签: php variables cron increment execution


【解决方案1】:

在对脚本的调用之间,您必须将变量的值保存到非易失源。此外,如果(通常情况下)几乎可以同时调用脚本,则必须考虑竞争条件。

最好的办法是将变量存储在维护事务安全的数据库中。即使是最便宜的网络托管商也提供某种形式的数据库来满足这一要求……具体情况取决于您的特定设置。

【讨论】:

  • 脚本每 30 分钟调用一次,共 8 次。我的数据库可以是数组不是吗?
  • 我刚想到这个。我还可以在脚本中设置 8 个变量。 var1、var2 等,并根据当前运行的 cron 的服务器时间从这些变量中提取值。因此,总共有 8 个 cron 作业。如果 cron 作业 1 从凌晨 1 点开始,则变量 1 有一个 if 语句,如果当前时间在凌晨 1 点到 1:29 之间,则使用此值。
  • 当然,但前提是您确定时间 - 但是,如果您可以根据时间在功能上计算出预期值,您为什么要让自己经历这种脑损伤什么样的变量?只需编写一个函数来根据当前时间生成值。
  • 你是对的。我还没有看到那么远。但是,是的,我确定时机。每个 cron 将在特定时间设置。
  • 这应该可以吗? date_default_timezone_set('America/Utah'); // MDT $current_date = date('H:i:s'); if($current_date >= '00:00:00') { $increment = '1'; } elseif($current_date >= '00:30:00') { $increment = '2'; } elseif($current_date >= '01:00:00') { $increment = '3'; }
【解决方案2】:

将计数器值存储在数据库中并在执行脚本时使用 + 1 更新计数器

示例脚本

$conn = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

if($query = $conn->query("YOU ACTION QUERY HERE"))
{
    // Here you call your actions of script

    /* Increment the counter field here. */
    $conn->query("UPDATE table SET counter = counter + 1");
}

$conn->close();

注意它的简单逻辑是每次执行脚本时将变量加 1。

【讨论】:

  • 谢谢。当我想使用数据库作为存储时,我会记住这一点。
  • @Mike 你现在想用什么?
  • 我只需要在每次执行脚本时将值增加 1。示例:website.com/file1.txt,然后在下次执行时website.com/file2.txt
  • 我刚看到这个问题,难道你不能只有一个 inc.txt 文件存储当前值,每次运行脚本时,只需递增它并使用模板创建一个新文件file{$inc}.txt.
猜你喜欢
  • 2012-05-31
  • 2023-04-01
  • 2020-03-20
  • 2021-08-16
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
相关资源
最近更新 更多