【问题标题】:scheduling a one time request using PHP使用 PHP 调度一次性请求
【发布时间】:2013-09-13 01:41:53
【问题描述】:

我在自己的网站上有一个网址,我想在预定的时间点击一次,网址会有不同的参数,例如:

www.mysite.com?user_id=1    ==> execute this once 5 minutes from now
www.mysite.com?user_id=2    ==> execute this once 10 minutes from now
www.mysite.com?user_id=3    ==> execute this once 15 minutes from now
www.mysite.com?user_id=4    ==> execute this once 20 minutes from now

如何在 php 中做到这一点?我正在考虑使用 cron 作业,但这似乎用于重复操作,而在这种情况下,我希望它只执行一次。我也在考虑使用睡眠,但是睡眠会阻止当前的执行。还有其他方法可以做到这一点吗?

【问题讨论】:

  • I wanted it to execute once only
  • @invisal 就像我在上面指定的一样,距离当前时间 X 分钟
  • 您认为您是网站上的唯一访问者,还是其他人也经常访问该网站?
  • 嗯,你的意思是有人需要点击某个东西,然后那些链接将从指定的时间开始执行?必须有人做点什么来触发这些,对吧?它不只是神奇地决定自己触发。
  • @invisal 是的,完全正确.. 所以我将手动执行 www.mysite.com?user_id=4,然后从那里它将自己的请求传播到其他 user_id 的

标签: php php-5.3


【解决方案1】:

首先,有一个文本文件,其中包含您要使用时间戳更新的链接。例如:

1379041200 www.mysite.com?user_id=1 1379051200 www.mysite.com?user_id=2 1379101200 www.mysite.com?user_id=3

如果要添加更多链接,请将要执行的更多链接和时间戳附加到文件中。然后有一个每 5 分钟执行一次的骗局作业。 cron 作业将检查是否有任何时间戳小于当前时间戳的链接。

【讨论】:

  • con 作业将检查是否有任何时间戳小于当前时间戳的链接。 =====> 这是自动完成的吗?我不需要编写任何代码?
  • 当然,您需要编写一些代码。首先,让您的 cron 作业执行一个读取文件的 PHP 代码(每 5 分钟)。逐行读取,获取每一行的时间戳。将其与当前时间戳进行比较。然后执行链接。
  • Gotcha.. 我认为这是 cronjob 的内置功能,因此当我有一个前面带有时间戳的文本文件时,它会与执行作业的时间戳进行比较。跨度>
  • 顺便说一句,这完全是一个非常聪明和简单的 hack。喜欢它:)
  • @aherlambang,它确实需要是文件。您也可以使用数据库。执行完任何链接后,只需从数据库中删除记录或从文件中删除一行。
【解决方案2】:

你可以添加一个等待时间参数,并在你的代码开始处设置睡眠

www.mysite.com?user_id=1&wait_for=300

if(isset($_GET['wait_for'])) {
    sleep($_GET['wait_for']);
}

这样你的实际文件代码将在延迟后执行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多